SqlCommand のパラメーター: 列名のパラメーター化の代替
C# では、ストアド プロシージャが動的な列名のパラメーター化に常に望ましいソリューションであるとは限りません。ストアド プロシージャに頼らずにこれを実現できるでしょうか?
簡単な答えはノーです。 SqlCommand は列名のパラメータ化をサポートしていません。ただし、実行時にクエリを動的に構築できます。
インジェクション攻撃を防ぐには、入力列名 (この場合は「スロット」) が承認され、予期されるものであることを検証することが重要です。これを念頭に置いて、次のようにクエリを構築できます。
// TODO: verify that "slot" is an approved/expected value SqlCommand command = new SqlCommand("SELECT [" + slot + "] FROM Users WHERE name=@name; ") prikaz.Parameters.AddWithValue("name", name);
このメソッドにより、指定された列名に基づいてクエリを動的に構築しながら、「@name」などの入力値をパラメータ化できます。
以上がC# SqlCommand はストアド プロシージャを使用せずに列名をパラメーター化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。