虽然可以在APP代码中实现初次运行的时候建立数据库表和表中的数据。但是这样很容易在某次不小心中搞出点bug来。尤其是还把APP的各种配置信息写在SQLite中的,如果发生错误,寻找排查起来可能会非常耗时。那么更好的方式是,把SQLite在发布前就准备好。
首先在开发阶段就建立好SQLite数据库,待完成好数据库表和表中的字段内容后,把这个库文件保存在APP的assets路径中。在这个路径里,可以任意的建立路径深度,并且在代码中可以直接访问。我们只需要在APP运行时候,判断一下私有文件夹或SD卡的指定位置是否有我们需要的配置库就可以了。如果没有,就从assets路径下把配置库复制过来。
打开Android Studio找到assets文件夹
把数据库文件粘贴进去
在代码中,需要把这个数据库文件复制到指定位置,就写成一个独立的方法吧。每次onCreate的时候调用一下。
代码如下
/**
* Cofox 系统参数数据库初始化
* created at 2018/1/7 17:54
* 功能描述:
* file:SQLiteActivity.kt
*
*
* 修改历史:
* 2018/1/7:
*
*/
fun appParamConfig(fileName:String){
/**目标文件*/
val file = File(fileName)
//如果文件不存在就复制
if (!file.exists()){
//获取数据库文件的InputStream对象
val inputStream = resources.assets.open("cofoxTest.db")
val fos = FileOutputStream(fileName)
val buffer = ByteArray(100)
var count = 0
while (true){
count = inputStream.read(buffer)
if (count < 0){
break
}
fos.write(buffer, 0, count)
}
fos.close()
inputStream.close()
}
}
然后我们在界面上增加一个按钮,并把按钮的操作写为触发这个方法。
//初始化数据库文件
btnSQLiteDbFileInit.setOnClickListener {
appParamConfig(fileName)
}
<Button
android:id="@+id/btnSQLiteDbFileInit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="初始化数据库文件" />
初次运行后,点击“初始化数据库文件”按钮,再点击“查询记录”按钮,得到运行结果。
注意最后的配置信息config