有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想使用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) 个答案

  1. # 1 楼答案

    这是因为你的代码只得到行的2个值。请注意rs.getString(4)意味着,在第四列(使用基于0的索引)获取当前行上的值作为String

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

  2. # 2 楼答案

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

    下面是GitHub上代码repo的链接: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 |
    +--------+------------+------------+-----------+--------+-------------+
        .
        .
    
  3. # 3 楼答案

    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();
        }
    }
    
  4. # 4 楼答案

    使用这个代码

    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.           
    
        }
    

    本例中不显示列名