Я создаю приложение для Android и использую в нем базу данных sqlite. для этого я поместил файл sqlite в папку ресурсов проекта, и я копирую этот файл на телефон во время моего первого запуска приложения, используя приведенный ниже код.
private void copyDataBase() throws IOException {
new File(DB_PATH).mkdirs();
InputStream myInput = appContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
но я получаю эти ошибки.
09-21 18:03:56.841: E/SQLiteLog(7850): (1) no such table: tbl_player
но эта таблица существует в файле активов. поэтому я получил файл базы данных с телефона, используя этот метод.
public static void exportDB(String databaseName, Context context) {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//" + context.getPackageName()
+ "//databases//" + databaseName + "";
String backupDBPath = "sensor_game.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB)
.getChannel();
FileChannel dst = new FileOutputStream(backupDB)
.getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
}
} catch (Exception e) {
}
}
и я обнаружил, что в извлеченном файле базы данных нет таблицы.
Примечание. Эта проблема возникает только в OnePlus Two
и нормально работает в Nexus 4
, Htc 820
, Moto E
, Galxy S3
и Galaxy Quottro
.
void exportDB
. Сделайте это логическим и добавьте код, если currentDB не существует. Этот код будет/не может работать. - person greenapps   schedule 21.09.2015statement aborts at 15: [SELECT locale FROM android_metadata UNION SELECT NULL ORDER BY locale DESC LIMIT 1] 10-13 14:20:35.633 E/SQLiteDatabase(15040): Failed to open database '/data/data/myapp/databases/app.db'. 10-13 14:20:35.633 E/SQLiteDatabase(15040): android.database.sqlite.SQLiteException: Failed to change locale for db '/data/data/myapp/databases/app.db' to 'de_DE'.
- person David   schedule 13.10.2015copyDataBase
иexportDB
выполняются правильно без каких-либо исключений? - person ρяσѕρєя K   schedule 07.12.2015