有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java数据库元数据。当以小写形式使用表名时,getColumns()返回空结果集,但以大写形式使用右结果集

我使用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)

我可以得到正确的结果集

为什么?


共 (1) 个答案

  1. # 1 楼答案

    这是因为在内部,^{}^{}数据字典视图执行查询,在该视图中,它将表名模式与all_tab_columns.table_name匹配

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

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

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