2017-03-20 92 views
0

我正在開發一個UWP應用程序,並試圖在數據庫表中插入行按鈕單擊事件。以下是查詢相同:即使在處理數據庫連接之後,SQLitePCL.SQLiteResult也會在Step()返回「BUSY」

SQLiteConnection dbConnection = new SQLiteConnection 
     (Path.Combine(ApplicationData.Current.LocalFolder.Path + "\\" + fileName + "\\" + fileName + ".db")); 

var selectDB = @"*sample insert statement*"; 

ISQLiteStatement selectCall = dbConnection.Prepare(selectDB); 

var t = selectCall.Step(); 

dbConnection.Dispose(); 
dbConnection = null; 

selectCall.Dispose(); 
selectCall = null; 

插入查詢第一次執行成功(var t =「DONE」)。我面臨的問題是,在第一次執行後,出於某種原因數據庫被鎖定(var t =「BUSY」)。即使調用Dispose()函數後,同樣的問題仍然存在。我在這裏錯過了什麼嗎?有沒有更好的方法來做到這一點?這是我第一次使用SQLite。感謝您的幫助。

回答

1

這些Dispose調用不能保證實際發生(異常或其他流量控制語句可能會發生干擾)。

爲了確保物品設置,你應該使用using

using (var conn = new SQLiteConnection(...)) 
using (var selectCall = conn.Prepare("...")) 
{ 
    var t = selectCall.Step(); 
    ... 
} 
0

我只要我的數據庫被下載建立數據庫連接和固定我的問題。出現這個問題的原因是我爲每個數據庫操作創建了一個新的連接,導致鎖定的數據庫。處置這個連接仍然不能解決這個問題,即使將連接對象設置爲null也不會有幫助。所以使用單個數據庫連接對象解決了這個問題,這應該是一般的做法。希望這個答案有幫助。

相關問題