Android 预填充数据库 - 发布后添加新的预填充行
Android Pre Populated Database - Adding New Pre Populated Rows After Publication
我在使用 android 中的预填充数据库时遇到问题。虽然不是通常的问题。我的数据库工作正常。
我的问题是在应用发布后添加新数据。
我花了很多时间在 onupgrade 方法上,但后来我突然意识到我的问题出在其他地方。在我的资产文件夹中向我的数据库添加新行后,如何将这些添加到已复制到我的 data/data 文件夹的数据库中......
我的数据库是我存储游戏关卡信息的地方,table 中的最后一列是标记已完成关卡的标志,因此我不会丢失此信息。
您可以添加一些 sql 补丁文件,然后阅读它们以升级您的数据库。
我只是将它与 FileHelper static class 一起使用,我从 Danny Remington's post on SO 复制然后执行:
try {
InputStream in = mgr.open(assetFile);
String[] statements = FileHelper.parseSqlFile(in);
dao.mDb.execSQL("BEGIN TRANSACTION;");
/*dao.mDb is a reference to the SQLiteDatabase from my dao*/
for (String statement : statements) {
dao.mDb.execSQL(statement);
}
dao.mDb.execSQL("COMMIT;");
in.close();
} catch (IOException e) {
//
}
我在使用 android 中的预填充数据库时遇到问题。虽然不是通常的问题。我的数据库工作正常。
我的问题是在应用发布后添加新数据。
我花了很多时间在 onupgrade 方法上,但后来我突然意识到我的问题出在其他地方。在我的资产文件夹中向我的数据库添加新行后,如何将这些添加到已复制到我的 data/data 文件夹的数据库中......
我的数据库是我存储游戏关卡信息的地方,table 中的最后一列是标记已完成关卡的标志,因此我不会丢失此信息。
您可以添加一些 sql 补丁文件,然后阅读它们以升级您的数据库。
我只是将它与 FileHelper static class 一起使用,我从 Danny Remington's post on SO 复制然后执行:
try {
InputStream in = mgr.open(assetFile);
String[] statements = FileHelper.parseSqlFile(in);
dao.mDb.execSQL("BEGIN TRANSACTION;");
/*dao.mDb is a reference to the SQLiteDatabase from my dao*/
for (String statement : statements) {
dao.mDb.execSQL(statement);
}
dao.mDb.execSQL("COMMIT;");
in.close();
} catch (IOException e) {
//
}