package com.example.imputdatabase;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.util.Log;
public class DbManager {
private Context context;
private final int BUFFER_SIZE = 400000;
public static final String DB_NAME = "legerdemian.db"; // 保存的数据库文件名
//注意这里的PACKAGE_NAME改成你的项目的包名字,如果你不用你的包名那么下面的FileOutputStream fos = new FileOutputStream(dbfile);
//会抛出异常,当初本人就是在这卡了好久,因为没认真看代码
public static final String PACKAGE_NAME = "com.example.imputdatabase";
public static final String DB_PATH = "/data"+ Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME; // 在手机里存放数据库的位置
public DbManager(Context context) {
// TODO Auto-generated constructor stub
this.context = context;
openDatabase();
}
private void openDatabase() {
// TODO Auto-generated method stub
String path = DB_PATH+"/"+DB_NAME;
try {
if (!(new File(path).exists())) {// 判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库
InputStream is = this.context.getResources().openRawResource(
R.raw.legerdemain); // 欲导入的数据库
FileOutputStream fos = new FileOutputStream(path);
byte[] buffer = new byte[BUFFER_SIZE];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path,
null);
} catch (FileNotFoundException e) {
Log.e("Database", "File not found");
e.printStackTrace();
} catch (IOException e) {
Log.e("Database", "IO exception");
e.printStackTrace();
}
}
}