1

私のC#/ SQLiteアプリは正常に動作しますが、このエラーがときどき出力されます。

SQLite error (10): delayed 25ms for lock/sharing conflict

このスレッドで提案されているように、私は最新のSQLiteに更新しましたが、それでも発生します。
これを修正する方法は?


SQLiteバージョン:httpsqlite-netFx40-static-binary-Win32-2010-1.0.84.0.zip ://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wikiのPrecompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.0)段落

Visual C#2010 Express

4

2 に答える 2

2

この元のコードから:

    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);
        }
    }

これに変更すると問題が解決しました(最初の2行のみが異なります):

    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-23T05:01:46.970 に答える
0

あなたのコメントからソースコードを見る:

        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 ステートメントは、接続ではなくコマンドを破棄しています。コマンドごとにネストされた 2 つの using ステートメントを使用してみてください。

   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);
        }
     }
  }

これにより問題が軽減される場合がありますが、他の要因によってこのエラーが発生する可能性があります。

于 2013-01-18T10:11:54.403 に答える