我刚到apache derby岁,似乎无法工作

    CREATE TABLE IF NOT EXISTS table1 ...

当我试图在我的Java程序中运行这条SQL语句时,我得到的是'Syntax error: Encountered "NOT" at line 1, column 17.'.

我在文档页面上查了Derby Db Create Statements个,但找不到这样的替代方案.

推荐答案

创建表,捕获SQLException并判断SQL状态代码.

错误代码的完整列表可以在here中找到,但我找不到Table <value> already exists;大概是X0Y68 你需要的代码是X0Y32.

只需运行一次代码并打印错误代码.别忘了添加测试以确保代码正常工作;通过这种方式,您可以捕获错误代码中的更改(不应该发生…).

在我的项目中,我通常会添加一个带有静态方法的助手类,这样我就可以编写:

} catch( SQLException e ) {
    if( DerbyHelper.tableAlreadyExists( e ) ) {
        return; // That's OK
    }
    throw e;
}

另一种 Select 是对表运行SELECT并判断状态代码(应该是42X05).但这是您需要发送的第二个命令,它没有提供任何附加信息.

更糟糕的是,它可能会因为"表不存在"以外的其他原因而失败,所以"创建并忽略错误"更好.

Database相关问答推荐

将数据拆分为月份(以Postgres为单位

芭蕾舞女演员坚持 1:N 关系

如何高效地存储 100 万个单词并通过starts_with、contains 或ends_with 进行查询?

如何从 PostgreSQL 触发器发送邮箱?

查询最后一天、上周、上个月SQLite

如何在 MS Access 中实现 SQL INTERSECT 和 MINUS 操作

为什么null不等于null false

数据库供应商如何实现事务?

ODBC 与 JDBC 与 ADO.NET

在 MySQL 中查看表以进行更改?

如何从 SQLite 数据库中读取数据?

为什么有人需要内存数据库?

应用程序用户应该是数据库用户吗?

friendship数据库模式

判断Android中的应用程序数据库中是否存在列

寻找示例数据库设计的好方法

我是否需要为关系数据库表的主键创建单独的索引

数据库 EAV 优点/缺点和替代方案

使用命令行在 Mysql 中导入压缩文件

有任何使用协议缓冲区的经验吗?