1.将.db文件放入/res/raw文件夹下,没有raw文件夹则新建(New/Floder/Raw Resources Floder)
2.新建DbManager类
写入以下代码
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
public class DbManager {
private static final String DB_NAME = "data1.db";//文件名,自己修改
private static final String PACKAGE_NAME = "com.example.aaaaaa.test";//包名,自己修改
private static final String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME+ "/databases"; //存放路径( /data/data/com.*.*(package name)/database)
private SQLiteDatabase db;
private Context context;
DbManager(Context context) {
this.context = context;
}
//对外提供的打开数据库接口
public void openDataBase() {
this.db = this.openDataBase(DB_PATH + "/" + DB_NAME);
}
//获取打开后的数据库
public SQLiteDatabase getDb() {
return this.db;
}
// 本地打开数据方法
private SQLiteDatabase openDataBase(String filePath) {
try {
File myDataPath = new File(DB_PATH);
if (!myDataPath.exists()) {
myDataPath.mkdirs();// 假设没有这个文件夹,则创建
}
if (!(new File(filePath).exists())) {// 推断数据库文件是否存在,若不存在则运行导入,存在则直接打开数据库
InputStream is = context.getResources().openRawResource(R.raw.data1);
FileOutputStream fos = new FileOutputStream(filePath);
int BUFFER_SIZE = 400000;
byte[] buffer = new byte[BUFFER_SIZE];
int readCount;
while((readCount = is.read(buffer))>0){
fos.write(buffer,0,readCount);
}
fos.close();
is.close();
}
//打开数据库
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(filePath,null);
return db;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//关闭数据库
public void closeDataBase() {
if(this.db!=null)db.close();
}
}
|
3.在AndroidManifest.xml添加读写权限
1
2
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
4.在启动页的onCreate函数中加入:
1
2
|
DbManager manager = new DbManager(MainActivity.this);
manager.openDataBase();
|
手机usb调试,在 /data/data/com..(package name)/database
路径中即可找到数据库文件。
注1:没有执行query函数,Dbmanager中部分函数会提示没有被调用,无影响。