我在c中编码并使用sqlite3作为数据库。我想问一下我们如何检查是否可以。表中的列已更改或未更改。情况是这样的,我将使用新的可执行文件运行应用程序,根据该应用程序将在表中添加新列。因此,当再次创建数据库时,应用程序应检查表模式是否相同并且根据它应该创建一个新的模式table.Iam开发嵌入式环境的应用程序(特别是设备)。
当iam更改db中的表的列数并在设备中运行新的可执行文件时,由于存在旧表而没有创建新表,但是当iam删除旧数据库并创建新表时,则会发生更改。那么如何处理这种情况呢?
平台:Linux,gcc编译器 提前致谢
请指导我这样:(假设旧数据库已存在)
首先我们必须检查旧数据库的模式,如果某些表中有任何更改(比如添加或删除了一些新列),则根据该数据创建新数据库。
答案 0 :(得分:1)
您可以使用数据库版本控制来帮助解决此类问题。
创建一个单独的表,其中只有一列和一条记录来存储数据库版本。
每当您升级数据库时,请在单独的表中设置版本号。
设计插入查询以指定列。
定义新列的默认值,以便旧程序插入默认值。
UPDATE databaseVersion SET version=2;
INSERT INTO MyTable (id, var1, var2) VALUES (2, '5', '6');
INSERT INTO MyTable (id, var1, var2, var3) VALUES (3, '5', '6', '7');
这样,在使用旧程序时,您的查询仍应与新数据库兼容。