当前位置: 代码迷 >> 其他数据库 >> sqlite:简单执行一个查询,数据库文件就被锁(无法删除),怎么解决
  详细解决方案

sqlite:简单执行一个查询,数据库文件就被锁(无法删除),怎么解决

热度:104   发布时间:2016-05-05 08:15:17.0
sqlite:简单执行一个查询,数据库文件就被锁(无法删除),如何解决?
我需要删除sqlite的数据库文件,但哪怕只是简单执行一个查询,数据库文件就被锁(无法删除),如何解决?

以下为执行的步骤:
使用的是:System.Data.SQLite.dll version 1.0.82.0 and SQLite.Interop.dll


1.关掉IIS(彻底释放连接,这时数据库文件是可以删除的)
2.然后再执行下面的语句:
        Dim cmd As New SQLiteCommand()
        Dim conn As New SQLiteConnection(cm.sqlco)
        cmd.CommandText = "select * from dept"
        cmd.Connection = conn
        Dim ds As New DataSet()
        Dim adapter As New SQLiteDataAdapter()
        adapter.SelectCommand = cmd
        adapter.Fill(ds)
        conn.Close()
        conn.Dispose()

3.最后,再删除数据库,还是出现数据库锁住的提示:
 --操作无法完成,因为文件已经在IIS Worker Process中打开。

------解决思路----------------------
参考:http://www.16kan.com/question/detail/317573.html

我也遇到过这个问题,
c#中,如果ExecuteNonQuery后不立刻关闭SQLiteCommand,就会锁定文件
估计Fill也是一样

建议把SQLiteCommand放在Using里面试试,如:
using(SQLiteCommand cmd = conn.CreateCommand())
{
...
adapter.Fill(ds);
}

VB不知道怎么写,你研究下
------解决思路----------------------
楼上的建议很好.
针对cmd, conn都用using.
  相关解决方案