I want to copy an SQLite database from a data folder. This is my DatabaseAdapter.java class
package com.example.dictionary; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseAdapter extends SQLiteOpenHelper { static String DB_PATH = "/data/data/com.example.dictionary/databases/"; static String DB_NAME = "dict.db"; SQLiteDatabase db; private final Context mContext; public DatabaseAdapter(Context context) { super(context, DB_NAME, null, 1); this.mContext = context; } public void createDB(){ boolean dbExist = checkDB(); if (dbExist) { } else { this.getReadableDatabase(); try { copyDB(); } catch (Exception e) { throw new Error("Error copying DB"); } } } private void copyDB() throws IOException { InputStream dbInput = mContext.getAssets().open(DB_NAME); String outFile = DB_PATH + DB_NAME; OutputStream dbOutput = new FileOutputStream(outFile); byte[] buffer = new byte[1024]; int length; while ((length = dbInput.read(buffer))>0) { dbOutput.write(buffer,0,length); } dbOutput.flush(); dbOutput.close(); dbInput.close(); } private boolean checkDB() { SQLiteDatabase check = null; try { String dbPath = DB_PATH+DB_NAME; check = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READONLY); } catch (Exception e) {
When I run the application, this is not an error. but when I check the database folder, I saw the file "dict.db", but only 12.00K and only has the android_metadata table. Please help me. thanks.
source share