【问题标题】:Print out entire table with column names [duplicate]用列名打印出整个表[重复]
【发布时间】:2019-01-24 04:12:23
【问题描述】:

我目前正在学习 SQL,并且正在使用 MS SQL Server 2017。

我能够打印出一个包含除列名之外的所有数据的特定表,但我真的不知道如何检索它们。

这是我的部分代码(我删除了代码示例的 try catch)

Connection conn = null;
ResultSet rs = null;
String query = "SELECT * FROM Example";
ResultSetMetaData rsmd = null;

Class.forName(driver);
conn = DriverManager.getConnection(connectionUrl, userName, password);
Statement mS = conn.createStatement();
System.out.println("Verbindung wurde hergestellt");
rs = mS.executeQuery(query);
rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
while (rs.next()) {
    for(int i = 1; i <= columnsNumber; i++) {
        System.out.print(rs.getString(i)+ " ");
    }
    System.out.println();
}

编辑: 我希望它们只打印一次,以便我有某种“标题”

【问题讨论】:

    标签: java sql jdbc


    【解决方案1】:

    您应该从一个循环开始,为每个列索引打印rsmd.getColumnLabel(int column)

    // header
        for(int i = 1; i <= columnsNumber; i++) {
            System.out.print(rsmd.getColumnLabel(i)+ " ");
        }
        System.out.println();
    
    // data
        while(rs.next()) {
            for(int i = 1; i <= columnsNumber; i++) {
                System.out.print(rs.getString(i)+ " ");
            }
            System.out.println();
        }
    

    【讨论】:

    • 好的,这行得通,但是是否可以只检索一次这些,以便我将它们作为“标题”
    • 当然,只需将此循环放在您的 while (rs.next()) 循环之前就完成了(请参阅编辑后的答案)。
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2015-02-27
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多