如何将现有数据库放在.apk文件中?

ili*_*139 7 database android

我预构建了主要是字符串对象的数据库.我想知道如何放入我的apk文件,以便在用户安装数据库时已经创建了数据库.

msa*_*sal 11

我找到了一个很好的例子:在Android应用程序中使用自己的SQLite数据库

基本上,您将创建的数据库导出为sql文件并将其存储在assets-folder中.在第一个程序启动时,将文件的数据导入最终数据库.

我认为这是最好的方法,但是你的数据会在apk和db中出现两次,使用更多的存储空间.


kiw*_*rew 8

我刚刚开始为Android开发,并且惊讶地发现捆绑静态数据库并不容易.所以我做了唯一合理的事情:创建了一个可以做到这一点的库.用法示例:

import android.database.sqlite.SQLiteDatabase;
import kiwidrew.staticdb.StaticDatabase;

public class BlahBlah extends Activity {
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    SQLiteDatabase db = StaticDatabase.openDatabase(this, "assets/foobar.db");
    // Do normal database stuff with 'db'...
  }
}
Run Code Online (Sandbox Code Playgroud)

你得到一个标准的SQLiteDatabase对象,唯一的限制是它不支持写入.(明显!)

请注意,除非数据库存储在您的.apk中而不进行压缩,否则这将失败.使用aapt -0命令添加sqlite数据库或修改您build.xml<nocompress extension="db" />标志以将标志传递给<aapt>标记...

获取http://bitbucket.org/kiwidrew/android-staticdb上的代码.

注意:我刚刚写完这篇文章,到目前为止只进行了非常基本的测试.错误报告将不胜感激!