我已经使用JDBC执行了一个查询并遍历结果集我已经在java中的List中存储了所有字段。
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 while循环如何一次获得这7个字段(表中有一行有7个字段)。
我在这里有点迷惑。请帮帮我。
由于
答案 0 :(得分:1)
我认为你的List声明应该是
List<Any DAO Object> instead of List<String>
从结果集中获取时,创建一个DAO对象,将所有获取的数据添加到该对象中,然后将该对象添加到列表中。
然后,您可以在每次迭代时迭代并获取每个DAO对象。
答案 1 :(得分: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并获取您想要的任何特定条目。
当然,如果你有特定的值,那么为Entry创建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);
// ...
}
这样,对于某些具有除String之外的其他类型的列,您也可以像r.getInt(i)
一样调用。
答案 2 :(得分: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();
}