プロが教えるわが家の防犯対策術!

C♯での開発です。

引数で、カンマ区切りの文字列を受け取って、それをIN句に使ったSQLを発行
したいのですが、これをsqlparamaterで出来ないか悩んでいます。

キーが決まった数しかこないのであれば、
command.CommandText = "SELECT * FROM Table1 WHERE NAME IN (@name1,@name2)";
こんな感じでいいんでしょうが、動的である場合、どうしたら良いのでしょうか?

A 回答 (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
のようなことをするとか。(回りくどいですが)
    • good
    • 1

以下を参考にされてはいかがでしょうか。


パラメータの変数と値をそれぞれ配列化して動的にSqlParameterをNewしています

ttp://d.hatena.ne.jp/re_guzy/20060107/p1
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!