Android的SQLITE(设置数据库的最佳方法)



我已经看到了几种不同的方法,你可以利用SQLite作为你的应用程序的数据库。它们如下:

  • 创建数据库并通过XML文件导入数据
  • 使用SQLite GUI (SQLite数据库浏览器)
  • 通过数据库助手类直接创建数据库。

每一个的好处是什么?我倾向于使用SQLite数据库浏览器加载一些表,我需要我的应用程序。我也将有用户输入。

你是否建议我有一个额外的表来存放他们的输入和Union,或者允许用户输入到我提供的表中。我预见的一个问题是升级应用程序(通过市场),我不希望用户丢失他们输入的数据。

谢谢!

我做了一个选择:

  • 将每个模式和数据填充文件作为脚本存储在资源
  • 创建一个包装器类,从资源
  • 中运行这些脚本
  • 其中一个资源文件是一个众所周知的(按名称)清单,它有一个脚本的列表,按顺序运行。
  • 我在数据库中有一个属性表,它存储了最后运行的脚本。

这意味着:

  • 在创建时(第一次运行)-它连续运行所有脚本
  • 当应用程序更新时-它运行所有尚未运行的脚本。此更新在资源中包含更多脚本。

脚本更新模式和修改/修改现有的客户数据-当然不会丢失数据。

顺便说一句,我在iOS上这样做的目的是为了在android, winphone和其他平台之间共享这些sqlite脚本。您只需要运行序列的每个平台上的包装器类。

这也意味着如果需要的话,我可以从命令行按顺序运行脚本来创建db…

编辑:

例如,在我的示例应用中,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表之后包含一系列insert into语句。

在脚本中执行多个批处理需要在prepare中使用tail参数。如果你想看的话,我有C/objective-c代码但我还没有写android包装器。

相关内容

最新更新