Java 如何按原样显示或打印数据库表的内容?
我想使用Java代码从数据库中获取一个表。我尝试的示例代码只得到两列。我希望获取的数据与表中的数据完全相同。 我该怎么做 这个代码只给了我两行,并排-Java 如何按原样显示或打印数据库表的内容?,java,sql,sql-server-2008,Java,Sql,Sql Server 2008,我想使用Java代码从数据库中获取一个表。我尝试的示例代码只得到两列。我希望获取的数据与表中的数据完全相同。 我该怎么做 这个代码只给了我两行,并排- while (rs.next()) { System.out.println(rs.getString(4) + " " + rs.getString(6)); } 完整示例见- 并得到一个错误-请求的操作在仅向前的结果集上不受支持。这是因为您的代码只得到该行的2个值。请注意,rs.getString(4)的意思是,在第4列(使用基于0的索
while (rs.next()) {
System.out.println(rs.getString(4) + " " + rs.getString(6));
}
完整示例见-
并得到一个错误-请求的操作在仅向前的结果集上不受支持。这是因为您的代码只得到该行的2个值。请注意,
rs.getString(4)
的意思是,在第4列(使用基于0的索引)获取当前行的值作为字符串
如果要打印所有列,应编写其余的rs.getXXXX()
,其中XXXX
是列数据类型,如getString()、getInteger()、getLong()等。请参阅此java以供参考。使用此代码
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
来源-
使用该代码后,可以像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.
}
ResultSetMetaData rsmd=rs.getMetaData();
int columnsumber=rsmd.getColumnCount();
//遍历结果集中的数据并显示它。
while(rs.next()){
//打印一行
对于(int i=1;i我发布了一个类似问题的答案,但我相信这一个也相关,可能更相关。简而言之,我编写了一个简单的实用程序类,将db表行打印到标准输出(部分有趣,部分学习)。它可能对某些人有用(至少我希望如此)
以下是GitHub上代码repo的链接:
以下是基本用法:
// 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 |
+--------+------------+------------+-----------+--------+-------------+
.
.
…您打印出其他列…@MitchWheat-我想得到结果集中的列数,然后打印出来。api没有像getNumberOfColumns()这样的方法;这已经解决了。@摩天大楼-请在这里提供您喜欢的解决方案来回答这个问题,让其他人知道……)另请参见如果要获取每行值,则应迭代rs
变量。如果要获取行大小,请检查
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 |
+--------+------------+------------+-----------+--------+-------------+
.
.