web-dev-qa-db-ja.com

SqlCommandパラメーターAddとAddWithValue

いつParameters. Add/AddWithValueを使用すべきですか?次のMSDNの例では、intにはParameters.Addを使用し、stringにはParameters.AddWithValueを使用します

command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;

command.Parameters.AddWithValue("@demographics", demoXml);

datetimeに最適なものは何ですか

25
Yakov

少し手間をかけてすべてを明示的にしたい場合は、Addを使用します。怠けている場合はAddWithValueを使用します。 AddWithValueはその値のパラメーターの型を導出するため、正しい型であることを確認してください。たとえば、stringintに正しい型である場合、解析する必要があります。

Addを避ける理由が1つあります。パラメーターの型がintの場合、 パラメーター名とオブジェクトを受け取るオーバーロード 以降に注意する必要があります- 別のオーバーロードはSqlDbType- enumで選択されます

備考 から(メソッドのオーバーロードはobsoleteになりました):

この_SqlParameterCollection.Add_メソッドのオーバーロードを使用して整数パラメーター値を指定する場合は注意してください。このオーバーロードはObject型の値をとるので、値がゼロのときに整数値をObject型に変換する必要があります...この変換を実行しない場合、コンパイラはSqlParameterCollection.Add(string, SqlDbType)オーバーロード。

37
Tim Schmelter