我想在完成使用後重命名我的SQLite數據庫文件,但即使在關閉所有連接後,該文件仍然顯示爲由SQLite打開。使用它後無法重命名SQLite數據庫文件
下面是我在做什麼的例子:
using (DbConnection conn = new SQLiteConnection("Data Source=test.db"))
{
conn.Open();
DbCommand command = conn.CreateCommand();
command.CommandText = "select id from test";
command.ExecuteScalar();
}
File.Move("test.db", "test.db.test");
的Move
調用拋出IOException。這是我對這個數據庫文件的唯一連接。一旦應用程序結束,我可以手動移動文件而不會出現問題。我嘗試了各種方法,例如在連接字符串中明確設置Pooling=false
,在處理連接之前手動調用Close
,明確啓動並提交事務,但這似乎沒有任何幫助。有沒有辦法強制SQLite在不退出應用程序的情況下關閉/釋放數據庫文件?
是的,我正在使用該庫和該版本。我正在使用VS2008(儘管仍然與.NET 2.0)。我不知道發生了什麼事?您是否預先創建了數據庫文件以包含「測試」表?我在沒有預先存在的數據庫文件的情況下嘗試了相同的代碼,並簡單地捕獲了ExecuteScalar調用引發的異常,並且沒有任何問題。雖然,數據庫文件是0字節,所以這不是一個成就...... – Dennis 2010-01-08 16:59:36
是的,我使用相同的代碼ExecuteNonQuery的「創建表測試(id整數)」第一次,然後我改變了代碼,並運行它幾次在調試和發佈模式。難道這個文件是在代碼的其他地方或者某個外部工具中使用的嗎? – vit 2010-01-08 17:06:28
我剛剛重載了SQLite.NET,現在工作正常,這很奇怪。感謝您嘗試這個,因爲我可能從來沒有想到過自己。 – Dennis 2010-01-08 17:13:23