当前位置:首页 > 数据库 > SQlite

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

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

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

每个人的好处是什么?我倾向于使用SQLite数据库浏览器来加载我的应用程序所需的几个表.我也会有用户输入.

你建议我有一个额外的表输入和联盟,或允许用户输入我提供的表.我预见的一个问题是升级应用程序(通过市场),我不希望用户丢失他们输入的数据.

谢谢!

解决方法:

我做过的一个选择:

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

这意味着:

>在创建(首次运行)时 – 它会连续运行所有脚本
>当应用程序更新时 – 它会运行尚未运行的所有脚本.此更新包含更多资源脚本.

脚本更新架构并修改/修改现有客户数据 – 当然不会丢失数据.

顺便说一句,我在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包装器…


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!