我決定更新我的應用程序及其數據庫,但在執行下面的代碼並運行該應用程序後,我得到的數據庫在一個陌生的方式複製 - 一些地方被複制,有些則不是。SQlite的DATABSE更新不能正常工作
我什麼迷得最多的是,雖然在我的Nexus出現問題everyting完美的作品在模擬器上。
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
copyDatabase();
} catch (IOException e) {
throw new Error("Error copying database" + e.toString());
}
}
public void copyDatabase() throws IOException {
// Open your local db as the input stream
InputStream myinput = myContext.getAssets().open(DB_NAME);
// Path to the just created empty db
String outfilename = DB_PATH + DB_NAME;
// Open the empty db as the output stream
OutputStream myoutput = new FileOutputStream(outfilename);
// transfer byte to inputfile to 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();
}
你傢伙還真真棒。我已經意識到,我已經改變了我的表架構在此期間,當我回到以前的版本,一切都開始正常工作。你能解釋我發生了什麼事嗎? –
不要以爲數據庫作爲中有你行「平面文件的存儲的。有很多包含.db文件中的元信息(見http://www.sqlite.org/fileformat.html一看到底是什麼)。你不感興趣,此存儲元數據信息,這實際上是問題是什麼,這就是爲什麼我建議傾銷的實際*數據*代替。 – Dororo
請你給我提供了一些Android的代碼,打開數據庫時,因爲我的應用程序崩潰。我得到‘數據庫磁盤映像格式有誤’?肯定會得到你的想法,但不熟悉implementationatin。提前致謝! –