当前位置: 代码迷 >> Java Web开发 >> 怎么设置Connection的ResultSetMetaDataOptions属性
  详细解决方案

怎么设置Connection的ResultSetMetaDataOptions属性

热度:9611   发布时间:2013-02-25 21:19:18.0
如何设置Connection的ResultSetMetaDataOptions属性?
目前的情况是,在tomcat中建立了一个连接Oracle的JNDI,URL为jdbc:oracle:thin:@jiangn:1521:jiangn,DRIVER为oracle.jdbc.driver.OracleDriver,运行以后可以连接,也能正常执行SQL语句。现在遇到的问题是,需要使用ResultSet.getTableName()方法,获取字段的所属表名,一直返回为空,在网上查了很久,说是要把数据库连接的ResultSetMetaDataOptions属性从默认的0改为1,才能正常使用ResultSet.getTableName()方法。试了很久,都不知道该属性在什么地方设置,请各位大侠帮忙

------解决方案--------------------------------------------------------
ResultSetMetaData rm=rs.getMetaData();
String tablename =rm.getTableName(1);
那个getTableName()方法带的整型参数是选择字段的,如果你写1,那就是求出第一个字段是从哪个表中来的,如果你的第一个字段不是从哪个表中得来的,而是select的时候生成的,那么表名会为空
所以你说用你的那种办法得出的表名为"",我估计就是因为那个记录集的第一个字段不是属于任何一个表的
你可以把那个参数改为别的,例如2,3,最好是做个循环,这样就可以知道所有的字段是从哪里来的了 
给你举个例子:
假如你的记录集是这么一句话来的:
select A.a,B.b,C.c from A,B,C
那么
String tablename =rm.getTableName(1); //这个时候表名为A
String tablename =rm.getTableName(2); //这个时候表名为B
String tablename =rm.getTableName(3); //这个时候表名为C

但如果是:select null as ID,A.a,B.b,C.c from A,B,C
那么
String tablename =rm.getTableName(1); //这个时候表名为""
  相关解决方案