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