1

我正在尝试在使用完 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 在不退出应用程序的情况下关闭/释放数据库文件?

4

2 回答 2

0

我想你正在使用SQLite.Net?我刚刚尝试了您的代码,并且在 Vista 上的 VS 2005 中使用 SQLite.Net 1.0.65 没有问题。

于 2010-01-08T16:47:22.373 回答
0

DBCommandIDisposable。也许您需要调用Dispose它或在using语句中创建它。

于 2010-01-08T17:10:48.503 回答