我有一个从我的assests文件夹中的文件创建的数据库。当应用程序升级时,我希望该文件夹中的新文件添加(追加)到当前数据库。我目前正在尝试使用下面的这个脚本,但它不起作用。我只是不添加到数据库。
//Open your local db as the input stream
InputStream myInput = myContext.getAssets().open(STATIC_DB_NAME);
// Path to the just created empty db
String outFileName = STATIC_DB_PATH + STATIC_DB_NAME;
//Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
//Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
答案 0 :(得分:1)
您应该查看使用SQLLiteOpenHelper并实现onUpgrade方法。在该方法中(仅当您的数据库版本号 - 您维护的东西 - 递增时调用),您可以打开资产文件并使用它来执行sqllite DB中的插入/更新。
因此,在这种情况下,将SQL命令存储在文件中,然后读取每一行并使用db.execSQL运行:
BufferedReader reader = new BufferedReader(new FileReader(STATIC_DB_NAME));
String line = reader.readLine();
while(line != null){
db.execSQL(line);
line = reader.readLine();
}
reader.close();