Пишу приложение под Android. Подключаю к нему Базу данных:
public class DatabaseHelper extends SQLiteOpenHelper{
private static String DB_NAME = "Database.sqlite";
private static String DB_PATH = "/data/data/com.example.user.project/databases/";
private SQLiteDatabase myDatabase;
private final Context myContext;
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, 1);
this.myContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void checkAndCopyDatabase(){
boolean dbExist = checkDatabase();
if (dbExist = true){
Log.d("Log", "database already exist");
}else {
this.getReadableDatabase();
}
copyDatabase(myContext);
}
public boolean checkDatabase(){
SQLiteDatabase checkDB = null;
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
if (checkDB != null){
checkDB.close();
}
return checkDB != null ? true : false;
}
public boolean copyDatabase(Context context) {
try {
InputStream inputStream = myContext.getAssets().open(DatabaseHelper.DB_NAME);
String outFileName = DatabaseHelper.DB_PATH + DatabaseHelper.DB_NAME;
OutputStream outputStream = new FileOutputStream(outFileName);
byte[]buff = new byte[1024];
int length = 0;
while ((length = inputStream.read(buff)) > 0) {
outputStream.write(buff, 0, length);
}
outputStream.flush();
outputStream.close();
Log.w("Log","DB copied");
return true;
}catch (Exception e) {
e.printStackTrace();
return false;
}
}
public void openDatabase(){
String dbPath = myContext.getDatabasePath(DB_NAME).getPath();
if (myDatabase != null && myDatabase.isOpen()) {
return;
}
myDatabase = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE);
}
public synchronized void close(){
if (myDatabase != null){
myDatabase.close();
}
super.close();
}
public Cursor QueryData(String query){
return myDatabase.rawQuery(query,null);
}}
Проблема в следующем, до подключения базы приложение запускается нормально на эмуляторе и на телефоне, после подключения БД запускается только на эмуляторе, но не работает на телефоне выбивает ошибку:
unknown error (code 14): Could not open database
указывает на строку в коде:
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
Подскажите пожалуйста в чем может быть проблема.
DBHelperс рабочим кодом – pavlofff Jan 16 '17 at 15:25