java - 如何以小写名称创建表 - JavaDB/Derby?

标签 java derby javadb

是否可以使用 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
);

将创建一个名为 USER_PROPERTIES 的表和一个名为 ID 的列。

您可以使用带引号的标识符强制 Derby 存储小写(或实际上混合大小写)名称:

create table "user_properties"
(
   "id" integer not null
);

将创建一个名为 user_properties 的表和一个名为 id 的列。

当您使用带引号的标识符(也称为“分隔标识符”)时,它们会区分大小写,因此第二个表必须始终使用双引号引用。

如果使用第二条语句创建表,则语句 select * from user_properties不起作用。您必须始终引用它:select * from "user_properties"

使用带引号的标识符通常会带来更多的麻烦,而不是其值(value)。如果您从不引用标识符,则可以在调用 getTables()

时安全地使用大写名称

关于java - 如何以小写名称创建表 - JavaDB/Derby?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156565/

相关文章:

java - 在java中打印2-100的因数

java - 在 Spring Boot JPA 中的 DATE TIME 删除

java - 无法使用 Java/JSP 将数据插入 Apache Derby 数据库

java - 如何使用 Derby 创建内存数据库表?

java - 使用游标从 SQLite 返回行,数据库为空时出错

java - 在 Quartz 作业中动态加载 Java 类文件的名称

java - 在 Java 中将时间戳设置为当前时间

sql - 与 CREATE OR REPLACE 等效的 Derby 是什么?

java - 使用 JDBC 检查表是否存在

java - OSX Lion 和 Java DB