如何从 Java 中的 ResultSetMetaData 获取不同的数据类型?

2022-09-01 17:09:57

我有一个返回不同类型的数据的结果集。查询是动态构造的,因此在编译时,我不知道查询将返回哪种类型的值。

我编写了以下代码,假设所有结果都是字符串。但我也想得到每个值的类型。我该怎么做?

以下是我写的代码。

while (reportTable_rst.next()) {
    String column = reportTable_rst.getString(columnIterator);
}

此时,我想获取列类型,并根据数据类型获取值。


答案 1

ResultSetMetaData.getColumnType(int column) 返回一个值,该值指定在 java.sql.Types 中找到的列类型。int

例:

Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD);
PreparedStatement statement = connection.prepareStatement(JDBC_SELECT);
ResultSet rs = statement.executeQuery();
PrintStream out = System.out;

if (rs != null) {
    while (rs.next()) {
        ResultSetMetaData rsmd = rs.getMetaData();
        for (int i = 1; i <= rsmd.getColumnCount(); i++) {
            if (i > 1) {
                out.print(",");
            }

            int type = rsmd.getColumnType(i);
            if (type == Types.VARCHAR || type == Types.CHAR) {
                out.print(rs.getString(i));
            } else {
                out.print(rs.getLong(i));
            }
        }
            
        out.println();
    }
}

答案 2

您可以致电,

返回指定列的 SQL 类型。

int ResultSetMetaData.getColumnType(int column)

返回指定列的数据库特定类型名称。

String ResultSetMetaData.getColumnTypeName(int column)


推荐