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

新手上路,请多包涵

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

我编写了以下代码,假设所有结果都是字符串。但我也想获得每个值的类型。我怎样才能做到这一点?

下面是我写的代码。

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

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

原文由 Java Questions 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 629
2 个回答

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

例子:

 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();
    }
}

原文由 Buhake Sindi 发布,翻译遵循 CC BY-SA 4.0 许可协议

ResultSet rs;
int column;
.....
ResultSetMetaData metadata = rs.getMetaData();
metadata.getColumnTypeName(column); // database specific type name
metadata.getColumnType(column);  // returns the SQL type

原文由 Jignesh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题