我正在尝试从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());
}
答案 0 :(得分:1)
您正在使用哪个版本的驱动程序?这可能与PostreSQL JDBC驱动程序实现有关。刚刚查看了9.1.jdbc4版本的实现,发现它只是返回一个空String。
还有另一种方法,可以使用metadata.getColumns(null, "%", tableName, "%");
看看这个例子here