我试图分别获取每一列,并在数据库中打印该列中的每个元素,以便以后使用。有功能可以做到这一点吗?
我尝试创建一个函数来打印控制台中的整个列。
Connection conn = DriverManager.getConnection(""jdbc:ucanaccess://C:\\Users\\b0616717\\workspace\\DATABASE.accdb);
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT * DATABASE.accdb");
ResultSetMetaData rsmd = rs.getMetaData();
public void test () throws SQLException {
for (int x = 1; x < db.rsmd.getColumnCount(); x++) {
while(rs.next()) {
String output = rs.getString(x);
System.out.println(output);
}
}
}
I expect it to console print every data in the pertaining column for every column. However, I get only one column printed out.
答案 0 :(得分:2)
您有向后循环。试试这个:
public void test () throws SQLException {
int numCols= db.rsmd.getColumnCount();
while(rs.next()) {
for (int x = 1; x <= numCols; x++) {
String output = rs.getString(x);
System.out.println(output);
}
}
}
rs.next()移至结果集中的下一行。也可以在循环前获得一次列数(效率更高)。
答案 1 :(得分:1)
如果您希望在打印时将各列改为行而不是一列,则可以使用rs.beforeFirst()
每个循环将光标移回到{{1 }}:
ResultSet
请注意,我添加了for (int x = 1; x < db.rsmd.getColumnCount(); x++) {
rs.beforeFirst(); //Move cursor to start
while(rs.next()) {
String output = rs.getString(x);
System.out.print(output + " "); //Print each value of a column with a space between
}
System.out.println(); //Move to next row
}
移至下一行,而println
不再使用output
,而是使用println
。
这将通过您的print
5次,但这只是您要求的规格。