Android 导入现有数据库

sky-mxc 总结 转载注明:https://sky-mxc.github.io

我们都知道 Android的 数据库默认是放在data\data\packageName\datbases\下的;
要导入现有的数据库将我们的数据库在 程序第一次启动的时候将数据库放在这个目录下,然后我们配置好SqliteDabase对象就可以 直接操作了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* 将 数据库从 assets 复制到 databases下
*/
private void copyDB() {
//data/data/packageName/databases/
File mkdir = new File(getFilesDir().getParent(),"databases");
//创建 databases文件夹
if (!mkdir.exists()) mkdir.mkdirs();
Log.e(TAG, "copyDb: mkdir="+mkdir.getPath());
//数据库文件
File file = new File(mkdir,"SinBusinessWssm1.db");
//只是在程序第一次启动时创建
if(!file.exists()){
//获取 assets管理
AssetManager assets = getAssets();
//执行文件复制
try {
InputStream open = assets.open("SinBusinessWssm1.db");
FileOutputStream fos = new FileOutputStream(file);
byte[] bs = new byte[1024];
int len ;
while ((len = open.read(bs))!=-1){
fos.write(bs,0,len);
}
fos.flush();
fos.close();
open.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Log.e(TAG, "copyDb: exists="+file.getPath());
}