我正在使用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))
但是,每次执行此语句都不是一个好习惯。有什么替代方法,它还会检查表是否存在,如果不存在则创建它?
答案 0 :(得分:2)
此问题称为“数据库迁移”。在应用程序创建的每个数据库连接上,您需要知道数据库结构和数据处于已知的预期条件和配置。
一种解决方案是在内部标记数据库的当前状态,即一种版本号。当然,数据库表可能是存储此版本信息的最佳位置。
我可以继续指导您完成您可以执行的各种版本控制,如何让您的应用运行SQL脚本和Java代码,以使您的数据库的任何实例与您当前的最新期望保持同步。但我不需要做那个解释。
已经构建了两个非常好的项目来完成这些数据库迁移。没有代码可以写!这些项目中的任何一个都可以插入您的应用程序。
每次您的应用程序连接到数据库时,它都会检查存储在额外表中的最新已知版本控制信息。如果数据库实例已过期,则这些工具将运行创建/修改表定义,插入/修改/删除行等所需的SQL脚本和/或Java代码。
当然,在开发项目时,您必须仔细编写,测试和归档这些SQL脚本并更新Java代码。
答案 1 :(得分:1)
这是软件版本更新的常见问题。旧的数据库数据。
Best拥有一个包含您自己版本号的数据库条目。
然后在程序启动时,您可以以定义的方式相应地检查和更新,甚至可以在多个版本中进行更新。
while (database.version() < software.version) {
software.updateToNextFrom(database.version());
}