2

重複の可能性:
Parameters.Add と Parameters.AddWithValue の違い

MSDNコードから、これら2つの違いは何ですか:

    SqlCommand command = new SqlCommand(commandText, connection);

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

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

パラメータを正しくキャストしていることを確認するために最初のものを実行する方が良いですか? コードをより安全にしようとしています。

4

2 に答える 2

4

MSDNによると:

AddWithValue は、文字列とオブジェクトを取る SqlParameterCollection.Add メソッドを置き換えます。文字列とオブジェクトを受け取る Add のオーバーロードは、 SqlParameterCollection があいまいになる可能性があるため、非推奨になりました。文字列と SqlDbType 列挙値を受け取るオーバーロードを追加します。文字列と共に整数を渡すと、パラメーター値または対応する SqlDbType 値のいずれかとして解釈される可能性があります。名前と値を指定してパラメーターを追加する場合は、常に AddWithValue を使用します

したがって、AddWithValueあいまいさを生み出す非推奨のオーバーロードを置き換えます。

于 2012-12-05T21:44:29.157 に答える
2

おそらく、この記事が役立つでしょう http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx

于 2012-12-05T21:46:44.087 に答える