- ベストアンサー
sqlparamaterでIN句を使いたい。
C♯での開発です。 引数で、カンマ区切りの文字列を受け取って、それをIN句に使ったSQLを発行 したいのですが、これをsqlparamaterで出来ないか悩んでいます。 キーが決まった数しかこないのであれば、 command.CommandText = "SELECT * FROM Table1 WHERE NAME IN (@name1,@name2)"; こんな感じでいいんでしょうが、動的である場合、どうしたら良いのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
例えば string s = string.Empty; for (int i = 1; i <= n; i++) { if (s != string.Empty) { s += ","; } s += "name" + i.ToString(); } string sql = "SELECT COL1, COL2 FROM TABLE1 WHERE NAME IN (" + s + ")"; のような感じで動的に SQL 文を組み立てるとか。 動的に SQL を組み立てるのは NG ということであれば、例えば PARAMTABLE というパラメータ用のテーブルを作っておいて、そのテーブルにパラメータを INSERT して SELECT ~ FROM TABLE1 WHERE TABLE1.NAME = PARAMTABLE.NAME のようなことをするとか。(回りくどいですが)
その他の回答 (1)
- okera84
- ベストアンサー率28% (8/28)
以下を参考にされてはいかがでしょうか。 パラメータの変数と値をそれぞれ配列化して動的にSqlParameterをNewしています ttp://d.hatena.ne.jp/re_guzy/20060107/p1