【问题标题】:Is there an Java function to grab an entire column in a database?是否有 Java 函数可以抓取数据库中的整个列?
【发布时间】:2019-09-24 18:47:55
【问题描述】:

我正在尝试分别获取每一列,并打印数据库中相应列中的每个元素,以供我稍后使用。有没有可以做到这一点的功能?

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

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.

【问题讨论】:

  • 那么如果表ACCDB有五列,例如,你想循环整个结果集五次,对吗?
  • 是的,如果表格 ACCDC 有 5 列 (A,B,C,D,E) ,我想打印 A 下的每个数据,然后是 B,依此类推...
  • @ClubSavage 所以基本上你希望每一列都是一行而不是一列?

标签: java sql database


【解决方案1】:

你有向后的循环。试试这个:

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() 移动到结果集中的下一行。也可以在循环之前获取一次列数(效率更高)。

【讨论】:

  • 这会水平打印元素,而我想要垂直打印。同样,我注意到该功能需要很长时间才能完成(考虑到我的数据库的大小),还有其他方法可以解决这个问题吗?
  • 对列值使用 print,对新行使用 println。据我所知,没有其他方法。
【解决方案2】:

如果您希望列在打印时每个都是一个而不是一个列,您可以使用rs.beforeFirst()每个循环将光标移回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

这将通过您的ResultSet 5 次,但这些是您要求的规格。

【讨论】:

  • 接口java.sql.ResultSet中的方法beforeFirst()可能不受OP正在使用的JDBC驱动程序的支持。我在问题中找不到 JDBC 驱动程序详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多