私のコードに問題があります。 私のSQLiteデータベースでいくつかの行を削除したいのですが、 "データベースがロックされています"例外が発生します。 this postのような記事をいくつか読んだが、私の問題はまだここにある。私はラインcmdUpdate.ExecuteNonQuery();
の「データベースがロックされている」例外を取得SQLiteとC#で "データベースがロックされています"
using (var c = new SQLiteConnection(_connectionSQLite))
{
c.Open();
if (c.State == ConnectionState.Open)
{
var reqExist = string.Concat("SELECT id FROM ... ");
using (var cmdExist = new SQLiteCommand(reqExist, c))
{
var reqUpdate = string.Concat("UPDATE ... WHERE id = ", cmdExist.ExecuteScalar());
using (var cmdUpdate = new SQLiteCommand(reqUpdate, c))
{
cmdUpdate.ExecuteNonQuery();
}
}
}
c.Close();
}
:
は、ここに私のコードです。私は同じ結果をDELETE FROM
に置き換えようとしましたが、SELECT
で動作します。私のコードで何が問題なのか分かりません。
ありがとうございました。
@AbhilashRVankayala - ひどいアドバイスです。ネストされたusingステートメントには何も問題はありません。そのようなステートメント(またはequiv try-finallys)は、問題の原因の1つである適切なリソースの廃棄を保証するために必要です。 – antiduh
同じデータベースに複数の接続を同時に開いていますか? –
ExecuteScalarがidを見つけられない場合、不快なことが起こります。 ExecuteScalarの復帰を連結するのは巧妙な考えですが、... – Steve