0

私は次のコードを作成します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編集:数字のせいかもしれないと思ったなど、別の形式のプレースホルダーを使ってみました。私はまだ同じ問題を抱えています

4

1 に答える 1

0

@XXを文字とする形式の名前付きパラメーターを使用して解決しました。以前に試したと思っていたのですが、初めてミスをしたようです(初めて失敗したのは何だったのかわかりません)。今回は完璧に機能しました

于 2013-01-31T16:26:12.060 に答える