首页 > 解决方案 > 无法在 sql server 结果集元数据中获取列名和列标签

问题描述

任何人都可以通过连接到 sqlserver 数据库来帮助我使用 ResultSetMetaData 获取实际的列名及其别名。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

class MysqlCon {
    public static void main(String args[]) {
        Connection con = null;
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=alcoa", "sa", "test");
            Statement stmt = con.createStatement();
            String query = "SELECT std_code as \"Student code\" from Student ";

            ResultSet rs = stmt.executeQuery(query);

            ResultSetMetaData rsm =rs.getMetaData();
            for (int i = 1; i <= rsm.getColumnCount(); i++) {
                System.out.println(rsm.getColumnLabel(i) + "--" + rsm.getColumnName(i));
            }
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

输出

Student code--Student code

上面的代码在 mysql 和 oracle 等其他数据库中按预期工作。

我检查了SQLServerResultSetMetaData的代码。getColumnLabelgetColumnName两种方法是相同的。

abzycdxw65在他们的github 帐户上提出了同样的问题。它是关闭的。

有没有办法获得以下输出:

Student code--std_code

标签: javasql-server

解决方案


如果我收到您的问题,您可以尝试以下方法来检索列名

select name from sys.columns

推荐阅读