ResultSetMetaData方法getTableName返回空字符串

时间:2019-03-23 22:51:25

标签: java postgresql

我正在尝试从PostgreSQL数据库中获取SQL查询中涉及的表。但是,getTableName方法始终返回一个空字符串。 这是我的代码的一部分:

Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost/db?" +
 "user=root&password=root&useSSL=false");
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
 ResultSet.CONCUR_UPDATABLE);
ResultSet rs;
rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
columnsNumber = rsmd.getColumnCount();
if (!rs.next()) {
 System.out.println("No records found");

} else {
 do {
  RowsNumber++;
 } while (rs.next());
}




rs.beforeFirst();
for (int j = 0; j <= RowsNumber; j++) {
 while (rs.next()) {
  for (int i = 1; i <= columnsNumber; i++) {
   System.out.println(rsmd.getTableName(i));

  }

 }

}
conn.close();
}
catch (Exception e) {
 System.err.println("Got an exception! ");
 System.err.println(e.getMessage());
}

1 个答案:

答案 0 :(得分:1)

您正在使用哪个版本的驱动程序?这可能与PostreSQL JDBC驱动程序实现有关。刚刚查看了9.1.jdbc4版本的实现,发现它只是返回一个空String。

enter image description here

还有另一种方法,可以使用metadata.getColumns(null, "%", tableName, "%");

看看这个例子here