2012-03-16 48 views
-1

我已经使用JDBC执行查询并遍历结果集我已经将所有字段存储在List中的java中。Iterartor - 如何遍历特定记录

List<String> dataList=new ArrayList<String>(); 
     while(res.next()) 
     { 
      dataList.add(res.getString(1)); 
      dataList.add(res.getString(2)); 
      dataList.add(res.getString(3)); 
      dataList.add(res.getString(4)); 
      dataList.add(res.getString(5)); 
      dataList.add(res.getString(6)); 
      dataList.add(res.getString(7)); 
     } 
     Iterator<String> it= dataList.iterator(); 

由于我直接添加到列表中,因此如何在遍历迭代器时获取这7个字段。 方式:

while(it.hasNext()) 
{ 
    String f1=it.next(); 

} 

就像聪明,每次我想在 同时 和明年7 7场,未来7 .......所以使用这个while循环我怎样才能得到这7场(一个一次在有7个场的表中排)。

我在这里有点混淆。请帮帮我。

感谢

回答

1

你想要做的实际上是创建一个存储值的所有七个另一个目标是什么。

然后创建这些条目的列表,以便您可以一次访问一行,这是我认为您所要求的。

首先为该行创建一个类。

private static class Entry { 
    String[] row; 

    public Entry (ResultSet r) { 
     row = new String [ 7 ]; 
     for (int i = 1; i <= 7; i++) { 
      row[i] = r.getString(i); 
     } 
    } 
} 

使用它,您可以创建一个Entry对象列表。

List<Entry> entryList = new ArrayList <Entry>(); 

while(res.next()) 
{ 
    entryList.add (new Entry (res)); 
} 

然后,您可以继续并通过entryList循环并获取您想要的任何特定条目。

当然,如果您有特定的值,则可以明智地创建类型为String的实例变量,而不是字符串数组。

我的意思是,你可以这样做:

private static class Entry { 
    String column1; // rather than name column1 use what the column semantically represents 

    String column2; 

    // ... 

    public Entry (ResultSet r) { 
     column1 = r.getString(1); 
     // ... 
    } 

这样,你也可以像调用为r.getInt(i)具有String以外的不同类型的某些列。

祝你好运!

1

我觉得你的表声明应该是

List<Any DAO Object> instead of List<String> 

虽然从结果集读取,创建一个DAO对象,添加所有读入数据到该对象,然后添加对象到列表中。

然后,您可以在每次迭代中迭代并获取每个DAO对象。

+0

这很有道理!我没有意识到你,我其实也是这么说的。也许我不应该发布... – 2012-03-16 06:32:52

+0

@Kaushik有时会发生。你有这个问题,那就够了。 – 2012-03-16 06:35:24

0

您可以使用DatabaseMetaData的类,

private static final String DRIVER = "com.mysql.jdbc.Driver"; 

    private static final String URL = "jdbc:mysql://localhost/testdb"; 

    private static final String USERNAME = "root"; 

    private static final String PASSWORD = ""; 

    public static void main(String[] args) throws Exception { 
    Class.forName(DRIVER); 
    Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); 

    DatabaseMetaData metadata = connection.getMetaData(); 
    ResultSet resultSet = metadata.getColumns(null, null, "users", null); 
    while (resultSet.next()) { 
     String name = resultSet.getString("COLUMN_NAME"); 
     String type = resultSet.getString("TYPE_NAME"); 
     int size = resultSet.getInt("COLUMN_SIZE"); 

     System.out.println("Column name: [" + name + "]; type: [" + type + "]; size: [" + size + "]"); 
    } 
    connection.close(); 
    }