是否有Java函数可以捕获数据库中的整个列?

时间:2019-09-24 18:47:55

标签: java sql database

我试图分别获取每一列,并在数据库中打印该列中的每个元素,以便以后使用。有功能可以做到这一点吗?

我尝试创建一个函数来打印控制台中的整个列。

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.

2 个答案:

答案 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次,但这只是您要求的规格。