我使用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] 举报,一经查实,本站将立刻删除。