是否可以使用JavaDB / Derby以小写形式创建表及其名称?要检查表是否存在,我正在使用:
ResultSet rs = dbmd.getTables(null, "APP", "user_properties", null);
if (!rs.next()) {/*do something*/};
但是表名“ user_properties”必须符合目录中的大小写。
Derby遵循ANSI标准,该标准要求将未加引号的标识符折叠为大写。因此,以下语句:
create table user_properties
(
id integer not null
);
将创建一个具有name的表USER_PROPERTIES
和一个名为的列ID
。
您可以通过使用带引号的标识符来强制Derby存储小写(或实际上混合大小写)的名称:
create table "user_properties"
(
"id" integer not null
);
将创建一个具有name的表user_properties
和一个名为的列id
。
当您使用带引号的标识符(又称“带分隔符的标识符”)时,它们区分大小写,因此必须始终使用双引号引用第二个表。
该声明select * from user_properties
将不会如果表是用第二条语句创建工作。您必须始终引用它:select * from "user_properties"
。
使用带引号的标识符通常是造成很多比它的价值更多的麻烦。如果您从未引用过标识符,则可以安全地在调用中使用大写名称getTables()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句