我已经看到了几种不同的方法可以将SQLite用作应用程序的数据库。它们如下:
每个人的好处是什么?我倾向于使用SQLite数据库浏览器来加载我的应用程序所需的几个表。我也会有用户输入。
您是否建议我为其输入和Union添加一个附加表,或允许用户输入我提供的表。我预见的一个问题是应用程序升级(通过市场),我不希望用户丢失他们输入的数据。
谢谢!
答案 0 :(得分:3)
我做过的一个选择:
这意味着:
脚本更新架构并修改/修改现有客户数据 - 当然不会丢失数据。
顺便说一下,我在iOS上这样做是为了在android,winphone和其他平台之间共享这些sqlite脚本。您只需要在运行序列的每个平台上使用包装类。这也意味着我可以从cmdline开始按顺序运行脚本,以便在需要时创建数据库......
修改强>
例如,在我的示例应用程序中,Update1.sql是作为资源添加的文件。它有两个sql批处理。我的包装器打开清单文件,获取要运行的脚本列表,查询数据库以查看最后运行的脚本,然后创建要运行的脚本数组。当它运行列表中的Update1.sql时,我的包装器类将执行嵌入为资源的该文件中的所有语句。例如,这是我的Update1.sql
alter table messages add column user text;
create table log
(
id integer primary key autoincrement,
information text
);
现在,假设创建的新表需要一些数据。 (在我的例子中,日志表没有)。该脚本可以在create table之后包含一系列insert into语句。
在脚本中执行多个批处理需要在prepare中使用tail参数。我有C / objective-c代码,如果你想看到它,但我还没有编写android包装器......