我發現當用戶從電話中拉出電池時,應用程序的數據庫可能會損壞。這導致:嘗試編程sqlite數據庫修復
I /數據庫(1217):源碼返回:錯誤代碼= 14,味精=不能打開 文件在源極線25467
E /數據庫(1217): sqlite3_open_v2(」 /data/data/com.myapp/databases/mydata.db」 &手柄, 6,NULL)失敗
W/dalvikvm(1217):異常 Landroid /數據庫/源碼/ SQLiteException;拋出時初始化 Lcom/myapp/database/SQLhelper;
d/AndroidRuntime(1217):關閉 VM
W/dalvikvm(1217):線程ID = 1:螺紋與未捕獲 異常(組= 0x40015560)
前提離開
我讀到使用.dump可以恢復用戶數據。所以我採取了以下做法...
執行
final String strDBpath = Application.getContext().getDatabasePath(DB_NAME).getAbsolutePath();
final File fDBsrc = new File(strDBpath);
final File fDBtrgt = new File(strDBpath.replace(".db", "new.db"));
final String strExeCmd = "sqlite3 "+fDBsrc+" .dump | sqlite3 "+fDBtrgt;
boolean bSuccess = true;
try
{
Log.i(TAG, "executing "+strExeCmd);
Process process = Runtime.getRuntime().exec(strExeCmd);
process.waitFor();
} catch (Exception er)
{
bSuccess = false;
}
結果 無論其 - 上市/data/data/com.myapp/databases沒有透露新的數據庫。
這是一個權限問題?
這就是我試過的,而.dump沒有在應用程序中工作。它在終端上工作 –