Android如何附加SQLite数据库

时间:2011-11-20 12:24:11

标签: java android database sqlite

我有一个从我的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(); 

1 个答案:

答案 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();