5

我想使用 Java 代码从数据库中获取一个表。我尝试的示例代码只有两列。我希望获取的数据与表格中的完全一样。我怎么做 ?

这段代码只给了我两行,并排-

while (rs.next()) {
System.out.println(rs.getString(4) + " " + rs.getString(6));

}

完整示例在 -

http://msdn.microsoft.com/en-us/library/aa342339.aspx

This is what I tried - 

         int size = 0;
         if(rs != null){

            rs.beforeFirst();  
            rs.last();  
            size = rs.getRow();  

         }

         System.out.println("cols = " + size);

并出现错误 - 仅转发结果集不支持请求的操作。

4

4 回答 4

18

使用此代码

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();

int columnsNumber = rsmd.getColumnCount();

Source -如何从 JDBC ResultSet 中获取列数?

使用该代码后,可以显示 DBMS 显示的结果,如下所示 -

ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();                     

// Iterate through the data in the result set and display it. 

while (rs.next()) {
//Print one row          
for(int i = 1 ; i <= columnsNumber; i++){

      System.out.print(rs.getString(i) + " "); //Print one element of a row

}

  System.out.println();//Move to the next line to print the next row.           

    }

此示例中不显示列名。

于 2013-03-16T03:17:49.403 回答
17

我在这里发布了一个类似问题的答案,但我相信这也是相关的,也许更重要。简而言之,我编写了一个简单的实用程序类来将 db 表行打印到标准输出(部分乐趣,部分学习)。它可能对某人有用(至少我希望如此)。

这是 GitHub 上代码仓库的链接:https ://github.com/htorun/dbtableprinter

这是基本用法:

// Create a connection to the database
Connection conn = DriverManager.getConnection(url, username, password);

// Just pass the connection and the table name to printTable()
DBTablePrinter.printTable(conn, "employees");

它应该打印如下内容:

Printing 10 rows from table(s) EMPLOYEES
+--------+------------+------------+-----------+--------+-------------+
| EMP_NO | BIRTH_DATE | FIRST_NAME | LAST_NAME | GENDER |  HIRE_DATE  |
+--------+------------+------------+-----------+--------+-------------+
|  10001 | 1953-09-02 | Georgi     | Facello   | M      |  1986-06-26 |
+--------+------------+------------+-----------+--------+-------------+
|  10002 | 1964-06-02 | Bezalel    | Simmel    | F      |  1985-11-21 |
+--------+------------+------------+-----------+--------+-------------+
    .
    .
于 2014-11-04T15:04:21.500 回答
0

这是因为您的代码仅获得该行的 2 个值。请注意,这rs.getString(4)意味着,获取当前行4 列的值(使用基于 0 的索引)为String.

如果要打印所有列,则应编写其余列rs.getXXXX(),其中XXXX列数据类型为getString(), getInteger(), getLong(), etc. 请参阅此 java文档以供参考。

于 2013-03-16T02:44:02.670 回答
0
public static void printSqlTable(String selectQuery) {
      try {
           Statement statement = connection.createStatement();
           resultSet = statement.executeQuery(selectQuery);
           DBTablePrinter.printResultSet(resultSet);
              } catch (SQLException e) {
                  e.printStackTrace();
              } catch (Exception e) {
                  e.printStackTrace();
    }
}
于 2021-11-23T08:55:46.320 回答