我想使用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);
出现错误 - 仅向前结果集不支持请求的操作。
答案 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以供参考。