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(); } } }