2

我正在尝试通过使用 jdbc DatabaseMetadata 和 ResultSet 进行查询来获取表的预览(数据)。

如果我针对 MySQL 数据库运行下面的代码并正确返回表名和数据,则下面的代码工作得非常好,但如果针对 Exasol 数据库运行,它会给出 EMPTY tableName。我需要帮助来获取给定结果集的 tableName。

        Preview preview = new Preview();
        List<Map<String, String>> headers = new ArrayList();
        List<Map<String, String>> data = new ArrayList();
        HashMap<String, String> resultMap = new HashMap();

        PreparedStatement ps = null;
        ResultSet rs = null;
        try{
            ps = con.prepareStatement(query);

            rs = ps.executeQuery();

            ResultSetMetaData rsmd = rs.getMetaData();
            int columnCount = rsmd.getColumnCount();

            while(rs.next()) {
                HashMap<String, String> columns = new HashMap();
                Map<String, String> dataMap = new HashMap();
                headers.clear();

                for(int i = 1; i <= columnCount; ++i) {
                    Map<String, String> headersMap = new HashMap();
                    String name = rsmd.getColumnLabel(i);
                    preview.setName(rsmd.getTableName(i));
                    headersMap.put("id", name);
                    headersMap.put("name", name);
                    headersMap.put("dataType", (Object)null);
                    dataMap.put(name, rs.getObject(name) != null ? rs.getObject(name).toString() : null);
                    columns.put(name, rs.getObject(name) != null ? rs.getObject(name).toString() : null);
                    headers.add(headersMap);
                }

                data.add(dataMap);
            }
     }catch(Exception e){}

在 exasol 数据也返回的情况下,只有表名是“”。任何帮助或线索来解决这个问题请。

4

0 回答 0