1

厳密に型指定された DAL チュートリアルに基づいて、Visual Studio 2008 のデザイナーを使用して構築しているクエリに、コンマ区切りの値のリストをパラメーターとして渡したいと考えています。クエリは DB2 データベースに対して実行されます。これが私がやりたいことです:

select * from price where customer in(?)

123456 を ? として渡します。

しかし、'123456' を渡すと失敗します (これは char フィールドなので、これが機能しない理由はわかりません。これらを舞台裏で追加している必要があります)、または 123456、123457 または '123456'、'123457' です。

このページをポータルに追加します。すべてのデータ アクセスは、それを呼び出す BLL を使用して DAL デザイナー モデルに基づいて実行されるため、一貫性を保つためにこの方法で行いたいと考えました。これは可能ですか、それともツールが必要なことを達成するのに十分なほど柔軟性がないという状況ですか? ありがとう。

4

1 に答える 1

1

これは、パラメーター化されたクエリでよくある間違いです。単一のパラメーター プレースホルダー "" が単一の値?の代わりになることを覚えておく必要があります。

Joel Spolsky によるこの問題の巧妙な解決策については、以下の質問リンクを参照してください。

" SQL IN 句をパラメータ化しますか? "

また、他の多くの人が同じ質問に答え、標準的な解決策は SQL クエリを動的に構築し、渡す必要のある値ごとにパラメーター プレースホルダーを追加することだと繰り返しました。

于 2009-03-26T23:21:04.553 に答える