SQL IN ステートメントの SqlParameter としてリストを安全に使用する方法
Dec 28, 2024 am 07:05 AMリストの翻訳<string> SQL IN ステートメントの SqlParameter へ
クエリ内に囲まれた「IN」ステートメントは、指定された値のリスト内で特定の列に一致する値が必要であることを指定します。 SqlCommand オブジェクトを使用して SQL IN ステートメントを操作する場合、List<string> の変換に関して混乱が生じる可能性があります。互換性のある SqlParameter に変換します。
提供されたコード スニペット内:
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<string> を表します。 IN ステートメントで評価される値が含まれます。ただし、List<string> の直接マッピングは、 SqlParameter に既知のプロバイダーの種類との互換性がないため、例外が発生します。
SqlCommands を使用して IN クエリを安全に実行するには、次のアプローチの採用を検討してください。
- Construct Statement with Placeholders:
string sql = "SELECT dscr FROM system_settings WHERE setting IN ({0})";
このステートメントでは、{0} は次のステップで生成される動的パラメーター リストのプレースホルダーとして機能します。
- パラメータの準備Array:
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 サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
