首先把db放在res的下方創一個raw文件夾,裏面用來放db
創一個DbHelper類,實際代碼如下:
package com.laci.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by Laci on 2017/6/25.
*/
public class DbHelper extends SQLiteOpenHelper{
/**
*
* @param context 上下文
* @param name 數據庫的名字
* @param factory 數據庫工廠,null
* @param version 數據庫的版本
*/
public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
然後再相同的目錄下創一個DbManager類
package com.laci.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import com.zking.laci.android_project.R;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
/**
* Created by Laci on 2017/6/27.
*/
public class DbManager {
public static final String DB_NAME = "wenwen.db"; //數據庫名字
public static final String PACKAGE_NAME ="com.zking.laci.android_project";//包名
public static final String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME; //數據庫的絕對路徑( /data/data/com.*.*(package name))
private SQLiteDatabase db;
private Context context;
public DbManager(Context context) {
this.context = context;
}
//對外提供的打開數據庫接口
public void openDataBase() {
this.db = this.openDataBase(DB_PATH + "/databases");
}
//獲取打開後的數據庫
public SQLiteDatabase getDb() {
return this.db;
}
// 本地打開數據方法
private SQLiteDatabase openDataBase(String filePath) {
try {
File file = new File(filePath);
if (!file.exists()) { //判斷文件是否存在
//通過輸入流和輸出流,把數據庫拷貝到"filePath"下
file.mkdir();
File file2=new File(filePath+"/"+DB_NAME);
if (!file2.exists()) {
InputStream is = context.getResources().openRawResource(R.raw.wenwen);//獲取輸入流,使用R.raw.test資源
FileOutputStream fos = new FileOutputStream(file2);
byte[] buffer = new byte[1024];
int readCount;
while ((readCount = is.read(buffer)) > 0) {
fos.write(buffer, 0, readCount);
}
fos.close();
is.close();
}
}
//打開數據庫
SQLiteDatabase db =new DbHelper(context,"wenwen.db",null,2).getWritableDatabase();
return db;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//關閉數據庫
public void closeDataBase()
{
if(this.db!=null)
db.close();
}
}
最後在你第一個開始運行的activity中,寫下以下代碼
DbManager dbManager=new DbManager(getApplicationContext());
dbManager.openDataBase();