package com.iteedu.www;
import java.io.*;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.*;
public class DataBaseHelper{
// The Android's default system path of your application database.
private static String DATABASE_PATH = "/data/data/com.iteedu.www/databases/";
private static String DATABASE_FILENAME = "wordroot.db";
public SQLiteDatabase myDataBase;
private final Context myContext;
public DataBaseHelper(Context context) {
this.myContext = context;
}
public void openDataBase() throws SQLException {
// Open the database
String databaseFilename = DATABASE_PATH + DATABASE_FILENAME;
myDataBase = SQLiteDatabase.openDatabase(databaseFilename, null,
SQLiteDatabase.OPEN_READONLY);
}
public void createDataBase() throws IOException {
boolean dbExist = checkDataBase();
if (dbExist) {
// do nothing - database already exist
} else {
//this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
String databaseFilename = DATABASE_PATH + DATABASE_FILENAME;
checkDB = SQLiteDatabase.openDatabase(databaseFilename, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
// database does't exist yet.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
private void copyDataBase() throws IOException {
String databaseFilename = DATABASE_PATH + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();
FileOutputStream os = null;
try {
os = new FileOutputStream(databaseFilename);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
InputStream is = myContext.getResources().openRawResource(R.raw.wordroot);
byte[] buffer = new byte[8192];
int count = 0;
// 开始复制db文件
try {
while ((count = is.read(buffer)) > 0) {
os.write(buffer, 0, count);
os.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
is.close();
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}