下面是我的代码,试图检索表格格式Resultset
ResultSet rs = stmt.executeQuery("select * from product");
ResultSetMetaData meta = rs.getMetaData();
int count = meta.getColumnCount();
for (int i=0; i<count; i++) {
System.out.println(meta.getTableName(i));
}
但是它返回空,没有提到它是一个连接选择结果集。 是否还有其他方法可以从reusltset元数据中检索表名?
答案 0 :(得分:0)
获取ResultSetMetaData中的表名是大多数DBMS的JDBC驱动程序(Oracle,DB2,...)不会导致的,因为在许多情况下规范没有定义应返回的内容 - 例如在视图(视图名或基表名)的情况下,存在别名(表别名或实际表名),带有多个参数或没有参数的函数的结果等。
所以我担心没有办法得到你想要的大多数DBMS,最不重要的是以DBMS独立的方式。
答案 1 :(得分:0)
创建语句时,请尝试设置滚动/并发类型,如下所示:
conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY)
某些驱动程序需要这些设置才能返回表名。
答案 2 :(得分:-1)
传递给getTableName()的列索引从1开始。将循环更改为:
for (int i=1; i<=count; i++) {
System.out.println(meta.getTableName(i));
}