リストの翻訳
クエリ内に囲まれた「IN」ステートメントは、指定された値のリスト内で特定の列に一致する値が必要であることを指定します。 SqlCommand オブジェクトを使用して SQL IN ステートメントを操作する場合、List
提供されたコード スニペット内:
cmd.CommandText = "Select dscr from system_settings where setting in @settings"; cmd.Connection = conn; cmd.Parameters.Add(new SqlParameter("@settings", settingsList)); reader = cmd.ExecuteReader();
パラメーター settingsList は List
SqlCommands を使用して IN クエリを安全に実行するには、次のアプローチの採用を検討してください。
string sql = "SELECT dscr FROM system_settings WHERE setting IN ({0})";
このステートメントでは、{0} は次のステップで生成される動的パラメーター リストのプレースホルダーとして機能します。
string[] paramArray = settingList.Select((x, i) => "@settings" + i).ToArray();
ここで、文字列配列 paramArray は、settingsList を反復処理し、各値を "@settings0"、"@settings1" という形式の名前付きパラメーターに割り当てることによって導出されます。 、など
cmd.CommandText = string.Format(sql, string.Join(",", paramArray));
Format メソッドはステートメント テンプレートとパラメータ リストを結合し、パラメータ化された SQL ステートメントを生成します。
for (int i = 0; i < settingList.Count; ++i) { cmd.Parameters.Add(new SqlParameter("@settings" + i, settingList[i])); }
個別パラメータ
これらの手順に従うことで、List< を使用して SqlCommand オブジェクトで IN クエリを効率的に実行できます。文字列>データのセキュリティを維持し、潜在的なインジェクション攻撃を防止しながら、入力として使用できます。
以上がSQL IN ステートメントの SqlParameter としてリストを安全に使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。