在SQL中,您可以使用双引号来写入任何大小写的标识符,DBMS也有一个“默认”大小写,如果标识符没有被引号括起来,则使用该大小写。例如,PostgreSQL将未被引号括起来的标识符转换为小写,而Snowflake将它们转换为大写。JDBC是否定义了一种标准的方法来区分特定DBMS的JDBC类型?
gfttwv5a1#
从理论上讲,DatabaseMetaData中的以下方法可以给予这些信息:
DatabaseMetaData
storesUpperCaseIdentifiers()
storesUpperCaseQuotedIdentifiers()
storesLowerCaseIdentifiers()
storesLowerCaseQuotedIdentifiers()
storesMixedCaseIdentifiers()
storesMixedCaseQuotedIdentifiers()
但根据我的经验,各种驱动程序返回的信息并不是100%可靠的。Postgres驱动程序正确报告storesLowerCaseIdentifiers = true。MySQL驱动程序不检查服务器的配置,例如文件系统行为的各种组合lower_case_table_names和innodb_file_per_table。
storesLowerCaseIdentifiers = true
lower_case_table_names
innodb_file_per_table
1条答案
按热度按时间gfttwv5a1#
从理论上讲,
DatabaseMetaData
中的以下方法可以给予这些信息:storesUpperCaseIdentifiers()
storesUpperCaseQuotedIdentifiers()
storesLowerCaseIdentifiers()
storesLowerCaseQuotedIdentifiers()
storesMixedCaseIdentifiers()
storesMixedCaseQuotedIdentifiers()
但根据我的经验,各种驱动程序返回的信息并不是100%可靠的。
Postgres驱动程序正确报告
storesLowerCaseIdentifiers = true
。MySQL驱动程序不检查服务器的配置,例如文件系统行为的各种组合
lower_case_table_names
和innodb_file_per_table
。