ホームページ >データベース >mysql チュートリアル >Parameters.Add と Parameters.AddWithValue: 本当の違いは何ですか? どちらを使用する必要がありますか?
Parameters.Add と Parameters.AddWithValue の違いの詳細な説明
Parameters.Add
メソッドを使用すると、パラメーター名、SqlDbType、および値を指定できます。正しい構文は次のとおりです:
<code class="language-csharp">command.Parameters.Add("@ID", SqlDbType.Int); command.Parameters["@ID"].Value = customerID;</code>
対照的に、Parameters.AddWithValue
の構文はより簡潔であり、SqlDbType を指定する必要はありません:
<code class="language-csharp">command.Parameters.AddWithValue("@demographics", demoXml);</code>
ただし、Parameters.AddWithValue
と同じ構文で Parameters.Add
を使用した場合、コンパイル エラーは発生しません。興味深いことに、コードも正常に実行されます。
詳しい説明
内部的には、どちらのメソッドも同じメソッドを使用します:
<code class="language-csharp">return this.Add(new SqlParameter(parameterName, value));</code>
Parameters.AddWithValue
は、コードをわかりやすくするために Parameters.Add
を置き換えるために導入されました。 Parameters.Add
のオーバーロードでは、2 番目の引数はオブジェクト型であるため、どのオーバーロードを使用するかについて混乱が生じる可能性があります。オーバーロードの動作は大きく異なるため、この区別は重要です。
次の例を考えてみましょう:
<code class="language-csharp">SqlCommand command = new SqlCommand(); command.Parameters.Add("@name", 0);</code>
Add(string name, object value)
オーバーロードを呼び出しているように見えますが、実際には Add(string name, SqlDbType type)
オーバーロードを呼び出します。これは、0 が暗黙的に列挙型に変換できるためです。
したがって、Parameters.AddWithValue
を使用すると、潜在的な曖昧さが解消され、コードの可読性が向上します。 コードをより明確にして保守しやすくするために、優先して Parameters.AddWithValue
を使用することをお勧めします。
以上がParameters.Add と Parameters.AddWithValue: 本当の違いは何ですか? どちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。