SQLite数据库锁定错误

问题描述:

我开发与后端数据库SQLite的C#应用​​程序。在我的应用程序中使用mutithreaded概念。所有的线程都会调用下面提到的代码。那么它会在数据库被锁定时抛出错误。SQLite数据库锁定错误

lock (localLockHandle) 
     { 

      SQLiteCommand cmd = conn.CreateCommand(); 
      cmd.CommandText = sqlExpr; 
      int ireturn = cmd.ExecuteNonQuery(); 
      return ireturn; 
     } 

有没有什么办法摆脱这个数据库锁定错误。我在每个过程之后打开和关闭连接。有时甚至会引发这个锁定错误。请给我一个解决方案,因为它对我来说非常重要。

感谢

+0

我相信在这一点上应用锁定它真的不会做任何事情。 在我看来,你正在做一个查询来锁定数据库。这是查询本身,而不是SQLLiteCommand。 尝试发现在数据库变为锁定之前运行的最后一个查询是什么。 – Ricardo 2011-05-04 13:19:36

如果我正确理解您的代码段,你在局部范围内的物体上使用lock。这意味着其他线程将lock放在不同的对象上。

尝试定义一个全局锁,就像这样:

static readonly object DatabaseLock = new object()

,然后使用lock(DatabaseLock)无论你访问数据库。