以编程方式或通过资产中的.db文件创建db / tables更好

时间:2010-03-02 16:23:41

标签: database android sqlite

Android是否有关于创建&amp ;;的“最佳做法”指南以编程方式填充db / tables与在资产中部署.db文件?

这两种方法的优点/缺点是什么?

我有一个数据库,在几列中有大字符串,大约有50行,因此单独编写插入语句会占用相当大的空间。这似乎是浪费。

思想?

谢谢!
llappall

2 个答案:

答案 0 :(得分:2)

您提到的两种方法之间的差异很小,数据库大小为50行。我刚刚完成了一个大约8K行的应用程序。在这种情况下,首次启动应用程序时以编程方式加载数据仅需要模拟器上的5分钟。更改应用程序以从资产或原始目录加载数据库几乎立即加载数据库。

以编程方式加载数据库:

  • 易于修改
  • 随着尺寸的增加变得缓慢
  • 在应用中复制数据

从资产中复制:

  • 难以修改(需要修改数据库而不是文本文件)
  • 在初始化时快速加载大型数据库
  • 在应用中复制数据

在这两种情况下,数据都是重复的。安装后无法清除assets目录中的文本文件或数据库。因此,不仅存在该副本,而且数据现在也会在数据库中填充。为避免重复数据,存在第三种解决方案。当应用程序首次启动并正在初始化时,它可以从Internet地址获取数据库。它可以下载数据库并将内容复制到数据库(类似于从资产中复制)。

答案 1 :(得分:1)

我刚开始在Android上使用SQLite。

同样的因素也适用于您在此平台上的决策。

脚本编写和编程填充:

  • 允许通过电线更新,使自动更新程序更容易。
  • 编写更改脚本使其易于重现
  • 需要更多的初始工作(如果您无法生成创建脚本)
  • 可能导致版本问题(不知道已应用了哪些脚本化更改)和脚本更新失败。

预先填充数据库并部署

  • 创建和填充所需的类似时间,但通过GUI界面更容易。
  • 修复了数据库版本(虽然您可以保留快照版本)。
  • 要通过线路下拉更大的db文件大小以进行更新,而不是小脚本。
  • 部署是复制/粘贴与脚本执行。

毕竟,这一切都是首选,没有什么可说的,你不能从预先填充的数据库开始,并通过脚本进行更新。