如何按原样显示或打印数据库表的内容?

时间:2013-03-16 02:40:51

标签: java sql sql-server-2008

我想使用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);

出现错误 - 仅向前结果集不支持请求的操作。

3 个答案:

答案 0 :(得分:11)

使用此代码

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

int columnsNumber = rsmd.getColumnCount();

来源 - How to get the number of columns from a 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.           

    }

此示例中不显示列名。

答案 1 :(得分:10)

我将此答案发布到类似的问题here,但我相信这个也是相关的,可能更多。简而言之,我编写了一个简单的实用程序类来将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 |
+--------+------------+------------+-----------+--------+-------------+
    .
    .

答案 2 :(得分:0)

这是因为您的代码只获得该行的2个值。请注意,rs.getString(4)表示将当前行的值第4列(使用基于0的索引)作为String

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