2011-03-17 72 views
0

更新時出錯。 '嘗試寫只讀數據庫

我正在使用sqlite數據庫。我知道應用程序崩潰或系統崩潰後數據庫被鎖定..

我如何避免讓我的sqlite數據庫鎖定。

如何在DML查詢期間檢查數據庫鎖定。

如何打開鎖定的數據庫。

感謝

Mandeep

以下是我的代碼。

NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyApp.sqlite"]; 
    return defaultDBPath; 

現在我將上面的代碼更改爲此。

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDir = [documentPaths objectAtIndex:0]; 
databasePath = [documentsDir stringByAppendingPathComponent:databaseName]; 

回答

0

在Cocoa應用程序中使用SQLite的許多示例都提到了將空的「模板」數據庫副本作爲資源存儲在應用程序包中的方法。注意應用程序包不應該是可寫的,這一點很重要,所以此方法要求您將模板複製到可寫位置(請使用標準存儲位置),並使用文件作爲您的可寫副本。

這是你的問題嗎?

+0

@Joshua Nozzi,是的想想。 我收到以下故障日誌。 **更新時出錯。 '試圖編寫只讀數據庫' /Applications/MyApp.app/Contents/Resources/MyApp.sqlite + [Database insertRecord:Name:Assignment:],/Users/Deep/Desktop/MyApp/Database.m中的聲明失敗:327 ** – 2011-03-17 21:18:39

+0

對我來說看起來像是個問題。如果它不存在並使用THAT,則需要將模板數據庫文件複製到普通文件位置(如〜/ Library/Application Support/My Company/MyApp/MyApp.sqlite)。 – 2011-03-17 21:44:20

+0

@Joshua Nozzi我在後期添加了我的代碼。 – 2011-03-18 05:35:05

相關問題