我正在尝试在使用它之后重命名我的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关闭/释放数据库文件而不退出应用程序?
答案 0 :(得分:0)
我认为你正在使用SQLite.Net?我刚试过你的代码,并且在Vista上的VS 2005中使用SQLite.Net 1.0.65没有问题。
答案 1 :(得分:0)
DBCommand
是IDisposable
。也许您需要在其上调用Dispose
或在using
语句中创建它。