私は次のコードを作成しますSQLiteCommand
_deleteMergeWithBoth = new SQLiteCommand("delete from block where offset = ?1; delete from chunk where offset = ?1; delete from chunk where offset = ?2; update chunk set length = ?3 where offset = ?4", _db);
for (var i = 1; i <= 4; i++) _deleteMergeWithBoth.Parameters.Add(new SQLiteParameter(i.ToString(CultureInfo.InvariantCulture), DbType.Int64));
_deleteMergeWithBoth.Prepare();
コマンドのプレースホルダー(4つのステートメントがあります)は?xの形式で、xは数字です。
コマンドはそのままでうまく機能します。ただし、真ん中の2つのステートメントを結合すると、次のようになります。
delete from chunk where offset in (?1,?2)
コマンドで指定されたパラメーターが突然不足します。1つのコマンドで複数のステートメントを使用すると、パラメーターに問題が発生しました。その場合、私は単に使用していましたか?プレースホルダーとして。これは、番号付きのパラメーターを使用することで解決されました。ただし、この場合、何が間違っているのかわかりません。プレースホルダーは明らかに?2を参照しており、コマンドに関連付けられた「2」というパラメーターがあります。
@parametername
編集:数字のせいかもしれないと思ったなど、別の形式のプレースホルダーを使ってみました。私はまだ同じ問題を抱えています