想要在进行交易之前检查表是否存在

时间:2016-07-12 12:30:40

标签: java sqlite jdbc

我正在使用java和sqlite数据库编写应用程序。我在数据库中进行了很多插入。每次插入之前我都使用了以下sql语句并使用java

执行它
CREATE TABLE IF NOT EXISTS TABLE_NAME "
        + " (ID INT NOT NULL, "
        + " PERCENT INT NOT NULL, "
        + " TASK_DATA VARCHAR(1000) ,"
        + " CONSTRAINT pk_progressID PRIMARY KEY (ID))

但是,每次执行此语句都不是一个好习惯。有什么替代方法,它还会检查表是否存在,如果不存在则创建它?

2 个答案:

答案 0 :(得分:2)

数据库迁移

此问题称为“数据库迁移”。在应用程序创建的每个数据库连接上,您需要知道数据库结构和数据处于已知的预期条件和配置。

一种解决方案是在内部标记数据库的当前状态,即一种版本号。当然,数据库表可能是存储此版本信息的最佳位置。

我可以继续指导您完成您可以执行的各种版本控制,如何让您的应用运行SQL脚本和Java代码,以使您的数据库的任何实例与您当前的最新期望保持同步。但我不需要做那个解释。

已经构建了两个非常好的项目来完成这些数据库迁移。没有代码可以写!这些项目中的任何一个都可以插入您的应用程序。

每次您的应用程序连接到数据库时,它都会检查存储在额外表中的最新已知版本控制信息。如果数据库实例已过期,则这些工具将运行创建/修改表定义,插入/修改/删除行等所需的SQL脚本和/或Java代码。

当然,在开发项目时,您必须仔细编写,测试和归档这些SQL脚本并更新Java代码。

答案 1 :(得分:1)

这是软件版本更新的常见问题。旧的数据库数据。

Best拥有一个包含您自己版本号的数据库条目。

然后在程序启动时,您可以以定义的方式相应地检查和更新,甚至可以在多个版本中进行更新。

while (database.version() < software.version) {
    software.updateToNextFrom(database.version());
}