8

皆さん、

私が間違っていない限り、パラメーター化されたSQLクエリは、パラメーターごとにSqlDbTypeを指定するかどうかによって生成できます。パラメータ名とパラメータの値のみを指定することで、SqlParameterを作成できるようです。SqlDbTypeを指定する利点は何ですか?

4

4 に答える 4

6

利点は次のとおりですSqlDbType。パラメータがどうなるかを明確に制御できます。

それ以外の場合、ADO.NETは、メソッドで指定した値に基づいて推測する必要があります.AddWithValue。これらの推測はほとんどの場合かなり良いですが、たとえばを提供する場合DBNull.Value、本当によく考えられた推測を行うのは少し難しいです...

また、文字列を指定する場合は、最大値を指定できると便利なことがよくあります。その文字列パラメータの長さ(ストアドプロシージャxの定義内)。VARCHAR(x)そうしないと、ADO.NETは現在の長さを使用しますが、それは良いことも悪いこともあります。

つまり、全体として、それはあなたにより多くのコントロールを与えるだけであり、あなたの意図がより明確で明確です。

于 2010-12-16T16:41:43.540 に答える
2

SqlDbType を指定すると、パラメーターに指定した値が指定された SqlDbType に対して検証されるようになります。そのため、データが適合しない場合は、以前にエラーをキャッチできます (そうしないと、SQL Server から例外が発生します)。

于 2010-12-16T16:43:07.283 に答える
1

特定のSqlDbTypeを使用することで、より多くの制御が得られることに同意します。テキストを処理するときにさらに制御したいもう1つの理由は、Unicodeテキストを処理するときです。たとえば、SqlDbType.NVarCharとSqlDbType.VarCharを使用します。

于 2010-12-16T18:16:53.327 に答える
0

主な利点はパフォーマンスです。パラメータタイプを指定しない場合、SqlClientエンジンはパラメータ値からそれを推測します。設計時にパラメータタイプがわかっている場合は、それを指定することで、推論ステップのコストを回避できます。

于 2010-12-16T16:40:53.887 に答える