如何从Java中的ResultSetMetaData获取不同的数据类型? [英] How can I get different datatypes from ResultSetMetaData in Java?

查看:619
本文介绍了如何从Java中的ResultSetMetaData获取不同的数据类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a ResultSet that returns data of different types. The query is constructed dynamically so, at compile time, I don't know what type of value the query will return.

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

I have written the following code assuming that all results are Strings. But I want to get the type of each value too. How can I do this?

以下是我写的代码。

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

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

At this point, I would like to get the column type, and get the value according to the data type.

推荐答案

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

这篇关于如何从Java中的ResultSetMetaData获取不同的数据类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆