Я создаю функцию, которая обеспечивает обновление базы данных sqlite. У меня есть база данных (например, demo.db) в папке с ресурсами, которая копируется в папку с данными при первом входе в приложение Android. Однако, когда у меня есть новая версия для моего приложения, мне нужно заменить SQLite таблицы в папке активов, которые уже были созданы в данных/данных folder.Here мой код:Скопируйте таблицу sqlite из активов в данные/данные в Android
MySQLiteHelpter расширяет SQLiteOpenHelper:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
for(int i = oldVersion; i <= newVersion; i++){
switch (i){
case 8:
//delete the older table
db.execSQL("drop table if exists " + DFY_BD_DISTRICT);
//do something.
//I need to copy the table from the assets folder even I have already created the database in the previous version.
break;
}
}
}
Вот мой код я использую, чтобы скопировать свою базу данных в папку данных/данных в первый раз:
public static void loadDB(Context context, String dbName) {
String packName = context.getPackageName();
String dbPath = "data/data/" + packName + "/databases";
try {
File e = new File(dbPath);
if(!e.exists()) {
e.mkdirs();
}
File dest = new File(e, dbName);
if(dest.exists()) {
return;
}
dest.createNewFile();
InputStream in = context.getResources().getAssets().open(dbName);
int size = in.available();
byte[] buf = new byte[size];
in.read(buf);
in.close();
FileOutputStream out = new FileOutputStream(dest);
out.write(buf);
out.close();
} catch (Exception var10) {
var10.printStackTrace();
}
}
Как я искал в Интернете, я нашел какой-то вопрос, похожий на мой: https://stackoverflow.com/questions/12264860/android-sqlite-database-copying-table-from-assets-to-local-app-database Я рад, что если вы можете мне помочь:) Если вам нужно больше кода или более вопросов, я как можно скорее вставлю свой код.
Спасибо за ваш код ~ Но ваш код, похоже, скопирует базу данных в первый раз, когда я вхожу в приложение, а не копирую таблицу в базе данных из данных в папку данных/данных ~ – LinaInverce
Этот код обычно работает для Android 6.0+? –
В вашем случае @ LinaInverce ---- вы можете удалить старые данные db в обновлении и скопировать новый db из активов программным путем. – beginner