我的C#/SQLite应用程序工作正常,但偶尔输出此错误:
SQLite error (10): delayed 25ms for lock/sharing conflict正如在这条线上所建议的那样,我更新了最新的SQLite,但仍然会发生这种情况。
怎么解决这个问题?
SQLite版本:sqlite-netFx40-static-binary-Win32-2010-1.0.84.0.zip at Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.0)段落at http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
Visual C# 2010速递
发布于 2013-01-23 05:01:46
从这个原始代码:
using (var command = new SQLiteCommand(GetSQLiteConnection()))
{
try
{
command.CommandText =
"DELETE FROM folders WHERE path='" + path + "'";
command.ExecuteNonQuery();
}
catch (SQLiteException e)
{
SparkleLogger.LogInfo("CmisDatabase", e.Message);
}
}改为这样解决了问题(只有前两行不同):
var connection = GetSQLiteConnection();
using (var command = new SQLiteCommand(connection))
{
try
{
command.CommandText =
"DELETE FROM folders WHERE path='" + path + "'";
command.ExecuteNonQuery();
}
catch (SQLiteException e)
{
SparkleLogger.LogInfo("CmisDatabase", e.Message);
}
}发布于 2013-01-18 10:11:54
查看您评论中的源代码:
using (var command = new SQLiteCommand(GetSQLiteConnection()))
{
try
{
command.CommandText =
"DELETE FROM folders WHERE path='" + path + "'";
command.ExecuteNonQuery();
}
catch (SQLiteException e)
{
SparkleLogger.LogInfo("CmisDatabase", e.Message);
}
}using语句处理的是命令,而不是连接。尝试对每个命令使用两个嵌套的for语句。
using (var connection= GetSQLiteConnection())
{
using (var command = new SQLiteCommand(connection))
{
try
{
command.CommandText =
"DELETE FROM folders WHERE path='" + path + "'";
command.ExecuteNonQuery();
}
catch (SQLiteException e)
{
SparkleLogger.LogInfo("CmisDatabase", e.Message);
}
}
}这可能会减轻问题,但其他因素可能会导致此错误显化。
https://stackoverflow.com/questions/14394280
复制相似问题