Създавам приложение за 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