android - 在安装Android应用程序时将静态数据加载到Sqlite DB中

标签 android sqlite ormlite

我们的应用程序中有几个表,并且在创建数据库(即应用程序首次安装)时,每个表都是通过RAW sql文件填充的。即使用

executeSqlScript( dao, sqlFile )


每个表都有1个sql文件。目前,这很简单,但是随着表数量的增加,sql文件的数量也会增加。有没有更好的方法来填充数据库?将静态数据存储在XML文件中并将其反序列化为Domain对象并通过OrmLite持久化这些对象是更好的选择,还是我缺少其他技巧?

最佳答案

我还决定如何在一个Android应用程序中访问SqLite数据库。最后,我得到了OrmLite。基本上是因为我不喜欢将SQL语句硬编码为Java代码。我在搜索与Hibernate类似的东西,但对于Android来说“足够”。

OrmLite不仅根据您的域对象创建表,因此您无需编写SQL创建脚本。但是,仅通过创建Java对象并将其保存到DB来填充SqLite数据库也非常容易。

只有使用OrmLiteSqliteOpenHelper.onUpgrade()方法升级数据库时,才需要编写SQL脚本。在这种情况下,需要编写ALTER TABLE语句。否则,您可以使用纯Java来操纵SqLite DB。如果您为每个表创建1个Java文件,则取决于您。或者,您可以在一个Java文件中填充多个表。这样做的好处是您编写了Java代码,该代码已通过Java编译器验证。如果将SQL语句硬编码为字符串,则情况并非如此。

如果您有大量的初始化数据,并且可以轻松地以XML文件形式获取数据。然后,将XML反序列化为域对象并将其使用OrmLite存储到DB可能也是一种解决方案。

关于android - 在安装Android应用程序时将静态数据加载到Sqlite DB中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13280064/

相关文章:

java - 使用MVP模式是否会降低性能?

android - 覆盖操作栏不起作用

java - AndroidPlot - 从 GraphWidget 中删除域值

android - 在创建数据库后创建表是否会更改 SQLite 中的数据库版本?

android - 如何摆脱android全屏模式下的顶部淡入淡出边缘?

android - 部署带有大量数据的应用程序的最佳方式

java - 是否可以在 OrmLite 持久化的类中有一个枚举字段?

android - SQLite 异常 : unknown error (code 0): Native could not create new byte[]

android - ormlite:sql语句不像抛出异常

android - 房间数据库迁移