2010-05-06 28 views
1

下面得到一个表名是我的代码试图检索表名称格式结果集我可以从连接选择结果集元数据

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元数据检索表名称?

回答

-1

传递给getTableName时()列索引从1开始改变你的循环阅读:

for (int i=1; i<=count; i++) { 
    System.out.println(meta.getTableName(i)); 
} 
0

获取表名从ResultSetMetaData的是大多数DBMS的JDBC驱动模式(甲骨文,DB2,...)因为在很多情况下规范没有定义应该返回的东西 - 例如,在视图(视图名或基本表名)的情况下,别名(表别名或真实表名)的存在,多个参数或没有参数的函数的结果等。

所以我害怕有没有办法让大多数DBMS得到你想要的东西,最不重要的是以独立于DBMS的方式。

0

当你创建你的语句,尝试设置滚动/并发类型,像这样: conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY)

有些司机为了回报表名需要这些设置。

See here for details

相关问题