微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – DatabaseMetaData.getColumns()在使用小写的表名时返回空ResultSet,但在上层使用右ResultSet

我使用oracle 11g,并创建一个这样的表:

create table test1(
id int,
name varchar(10),
inserttime date
)

然后我使用jdbc方法

DatabaseMetaData.getColumns(null, null, "test1", null)

并得到空的ResultSet.
但是当我用的时候

DatabaseMetaData.getColumns(null, null, "TEST1", null)

我可以得到正确的ResultSet.

为什么?

解决方法:

这是因为在内部,OracleDatabaseMetaData.getColumns()all_tab_columns数据字典视图执行查询,其中它与all_tab_columns.table_name的表名模式匹配.

按照惯例,Oracle以大写格式在数据字典中存储标识符(例如此处的表名).您可以通过在db中执行以下查询来验证这一点:

SELECT * FROM all_tab_columns t where t.table_name = 'TEST1';

这里表标识符的区分大小写确实是违反直觉的,特别是因为表标识符在Oracle sql中不区分大小写.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐