Попробуйте скопировать файл БД следующим образом:
public class DbHelper extends SQLiteOpenHelper {
private static String DB_PATH = new File(getFilesDir(), "databases").getPath();
private static String DB_NAME = "test_db.db";
private SQLiteDatabase dataBase;
private final Context fContext;
public DbHelper(Context context) {
super(context, DB_NAME, null, 1);
this.fContext = context;
}
public void createDataBase() throws IOException {
boolean dbExist = checkDataBase();
if (dbExist) {
//ничего не делаем – файл базы данных уже есть
} else {
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
//файл базы данных отсутствует
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
private void copyDataBase() throws IOException {
InputStream input = fContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream output = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
output.flush();
output.close();
input.close();
}
public void openDataBase() throws SQLException {
String path = DB_PATH + DB_NAME;
dataBase = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
}
@Override
public synchronized void close() {
if (dataBase != null)
dataBase.close();
super.close();
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Если вы используете API 19 или выше:
String db_path = fContext.getDatabasePath(DB_NAME);
Когда я хочу открыть базу данных в sqlliteeditor, я получаю ошибку 14.
Также советую проверить файл БД. Если при открытии в редакторе возникает ошибка, скорее всего, проблема не в алгоритме копирования файла.