SQLite数据库锁定错误
问题描述:
我开发与后端数据库SQLite的C#应用程序。在我的应用程序中使用mutithreaded概念。所有的线程都会调用下面提到的代码。那么它会在数据库被锁定时抛出错误。SQLite数据库锁定错误
lock (localLockHandle)
{
SQLiteCommand cmd = conn.CreateCommand();
cmd.CommandText = sqlExpr;
int ireturn = cmd.ExecuteNonQuery();
return ireturn;
}
有没有什么办法摆脱这个数据库锁定错误。我在每个过程之后打开和关闭连接。有时甚至会引发这个锁定错误。请给我一个解决方案,因为它对我来说非常重要。
感谢
答
如果我正确理解您的代码段,你在局部范围内的物体上使用lock
。这意味着其他线程将lock
放在不同的对象上。
尝试定义一个全局锁,就像这样:
static readonly object DatabaseLock = new object()
,然后使用lock(DatabaseLock)
无论你访问数据库。
我相信在这一点上应用锁定它真的不会做任何事情。 在我看来,你正在做一个查询来锁定数据库。这是查询本身,而不是SQLLiteCommand。 尝试发现在数据库变为锁定之前运行的最后一个查询是什么。 – Ricardo 2011-05-04 13:19:36