我正在尝试通过使用 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 数据也返回的情况下,只有表名是“”。任何帮助或线索来解决这个问题请。