2

次のコードを使用して、SQLite データベースの「Picture」フィールドを更新しています。

    public void SetImage(byte[] image)
    {
        var sql = "UPDATE Part SET Picture=@0 WHERE PartId=" + PartId.ToString(CultureInfo.InvariantCulture);
        var con = new SQLiteConnection(GetConnectionString());

        var command = new SQLiteCommand(con)
        {
            CommandText = sql
        };

        command.Parameters.AddWithValue("@0", image);
        con.Open();
        command.ExecuteNonQuery();
        con.Close();
        command.Dispose();
        con.Dispose();
    }

SQLite データベースとの間の他のすべてのデータ アクセスは正常に機能します。この 1 つのフィールドにデータを挿入しようとすると、「データベースがロックされています」というエラーが表示されるようです。私のアプリケーションはシングル スレッドであり、他のすべてのデータ アクセス関数は適切に閉じて、適切なオブジェクトを破棄します。誰が何が間違っているのか手がかりを持っていますか?

4

1 に答える 1

1

「データベースがロックされています」というエラーは、他の接続でまだトランザクションが開いていることを示している可能性があります。

すべてのコマンドと接続が適切に閉じられ、破棄されていることを確認してください。例外の場合でもこれを行うには、を使用しますusing

于 2012-11-05T08:10:05.673 に答える