当前位置: 首页 > 面试题库 >

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

督冠玉
2023-03-14
问题内容

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

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

以下是我编写的代码。

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

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


问题答案:

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


 类似资料:
  • 我有两个具有FK关系的表。我想要的相当于: 我如何在jOOQ中有效地做到这一点?最后,每个结果行需要一个ARecord实例和一个BRecord实例。

  • 在db.js中有一个代码片段,如下所示, 并且我想获得当我在app.js中调用函数时的结果数据,如下所示。 正如您所看到的,当我试图从db.js获取数据时,它在控制台窗口中显示“the data is undefined”。我该如何解决这个问题?有什么建议吗?

  • 我正在开发一个程序,提示用户输入姓名、年龄和性别。该程序应该从每个输入中给我一个姓名、年龄和性别的列表,并告诉我谁是该列表中年龄最大的人。我已经创建了一个数组列表来保存这些值,我可以使用增强循环打印出姓名、年龄和性别。我遇到的问题是让程序打印出数组列表中最高(最老)的数字。我已经创建了一个替代方法,通过创建一个只有年龄的附加数组列表来实现这一点,但是我似乎没有找到从原始数组列表中获取这一点的方法。

  • 问题内容: 我正在使用Oracle数据库。 我想使用Java JDBC获得分配给列的默认值。 但是using 没有提供任何方法来获取列的默认值。 所以,请告诉我任何想法。提前致谢。 问题答案: 您可以运行此查询

  • 我正在与发布者和订阅者制作聊天应用程序,我有两个类,一个是聊天框架,一个是聊天成员类。成员类从jtext field获取消息,聊天成员发布者将其发送回jtext Area。 我很难从订阅者MessageListener获取返回到jtext区域的文本 谢谢。

  • 问题内容: 我已经签出了很多页面,但是大多数教程和脚本使用这种JSON输出类型返回错误代码。那么,如何才能从Java中的JSON中提取数据? 问题答案: 如果要使用Gson,则首先声明用于容纳每个元素和子元素的类: 然后,声明一个最外层元素的数组(因为在这种情况下,JSON对象是一个JSON数组),并对其进行分配: 然后,您只需访问的元素。 要记住的重要一点是,您声明的属性的名称和类型应与JSON