遍历结果集键-可能吗?

时间:2018-06-23 16:04:22

标签: java json java-8 restlet

我有一个采用数据库连接,查询和参数并将查询解析为结果集对象的方法。很好,但是问题是要从结果集中获取每个值,我必须为要提取的每一行数据编写一行代码,然后将其保存在JSON容器中。有没有办法系统地执行此操作,以便我可以自动分析数据类型并根据从结果集中获取的键(无需手动指定键)创建JSON对象?

x='mnt:[4026532411]'

[[ $x == "$x" ]] && echo OK

1 个答案:

答案 0 :(得分:1)

ResultSetMetaData提供了SQL类型和Java类名称。

try (ResultSet resultSet = pStatement.executeQuery()) {
    ResultSetMetaData meta = resultSet.getMetaData();
    int ncols = meta.getColumnCount();
    while (resultSet.next()) {
        JSONObject tObject = new JSONObject();
        for (int colno = 1; colno <= ncols; ++colno) {
            String label = meta.getColumnLabel(colno); // Key
            String name = meta.getColumnName(colno);
            String sqlType = meta.getColumnType();
            String type = meta.getColumnClassName();
            String thisKeyName = label;
            Object thisKeyValue = result.getObject(colno);
            if (sqlType.contains("CHAR")) {
                thisKeyVaule = result.getString(colno);
                tObject.put(nextKeyName, nextKeyValue);
            } else if (sqlType.contains("INT")) {
                thisKeyVaule = result.getInt(colno);
                tObject.put(nextKeyName, nextKeyValue);
            } else {
                tObject.put(nextKeyName, nextKeyValue);
            }
        }
        tContainer.put(tObject);
    }
}

使用try-with-resources允许自动关闭(对Connection,Statement和ResultSet有用),即使在返回,中断或抛出异常时也是如此。