.NET パラメーター バインド メソッドの比較: Parameters.Add(string, object)
と Parameters.AddWithValue
.NET データベース操作のパラメーター バインディングでは、Parameters.Add(string, object)
と Parameters.AddWithValue
の両方のメソッドでパラメーターの追加を実装できますが、構文と関数は若干異なります。
Parameters.Add(string, object)
メソッド
Parameters.Add(string, object)
このメソッドには、パラメーター名、SQL データ型、パラメーター値の 3 つのパラメーターが必要です。たとえば、次のコードは、値が「customerID」である「@ID」という名前の整数パラメータを追加します。
<code class="language-csharp">command.Parameters.Add("@ID", SqlDbType.Int); command.Parameters["@ID"].Value = customerID;</code>
メソッドParameters.AddWithValue
メソッドは、SQL データ型を明示的に指定せずにこのプロセスを簡素化します。渡された値に基づいてデータ型を自動的に推測します。例は次のとおりです: Parameters.AddWithValue
<code class="language-csharp">command.Parameters.AddWithValue("@demographics", demoXml);</code>
機能比較
構文は異なりますが、 と Add
は最終的に同じ操作を実行します。AddWithValue
オブジェクトを Parameters
コレクションに追加します。内部実装は次のコードを呼び出します: SqlParameter
<code class="language-csharp">return this.Add(new SqlParameter(parameterName, value));</code>
構文の改善と非推奨
メソッドは、Parameters.AddWithValue
メソッドで発生する可能性のあるあいまいさを解決するために導入されました。 Add
メソッドの 2 番目のパラメーターはオブジェクトまたは Add
列挙を受け入れることができるため、混乱を招きやすいです。 SqlDbType
を使用し、AddWithValue
メソッドを非推奨にすることを推奨しています。 Add(string, object)
オブジェクト値を明示的に期待し、データ型を自動的に推測します。 AddWithValue
暗黙的な変換と潜在的な問題
は暗黙的な変換により予期しない動作を引き起こす可能性があることに注意してください。たとえば、2 番目の引数として整数 0 を渡すと、暗黙的に Add(string, object)
に変換されます。ただし、整数を 1 に増やすと、暗黙的に列挙型に変換できないため、SqlDbType.Int
の別のオーバーロードが呼び出されます。 Add(string, object)
結論
メソッドはまだサポートされていますが、潜在的なあいまいさのため、その使用は推奨されません。 Parameters.Add(string, object)
パラメーターを追加するためのより直接的かつ明確な方法を提供し、エラーのリスクを軽減し、データ型の正しい解釈を保証します。 Parameters.AddWithValue
以上が「Parameters.Add(string, object) と Parameters.AddWithValue: どちらの .NET パラメータ バインディング メソッドを使用する必要がありますか?」の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。