gpt4 book ai didi

java - DatabaseMetaData.getColumns() 在使用小写表名时返回空结果集,但在大写时返回正确的结果集

转载 作者:搜寻专家 更新时间:2023-11-01 03:02:31 26 4
gpt4 key购买 nike

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

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

然后我用jdbc的方式

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

并得到空的结果集。但是当我使用

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

我可以获得正确的结果集。

为什么?

最佳答案

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

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

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

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

关于java - DatabaseMetaData.getColumns() 在使用小写表名时返回空结果集,但在大写时返回正确的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32243552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com