هل dbnull.value مطلوب لأنواع لاغية مثل sqlcommandparameter.value
سؤال
ما هو النهج الموصى به:
void Add(int? value)
{
command.Parameters.Add("@foo").Value = value;
}
أو
void Add(int? value)
{
command.Parameters.Add("@foo").Value = (object)value ?? DBNull.Value;
}
المحلول
إذا كنت ترغب في تمرير قيمة فارغة في معلمة ، فأنت بحاجة إلى المرور DBNull.Value
كما في مثالك الثاني.
إذا قمت بتعيين null
نظرًا لأن قيمة المعلمة ، فلن يتم إرسال المعلمة إلى الإجراء ، والتي ستجعل استدعاء الإجراء إما الفشل (إذا كانت المعلمة مطلوبة) أو تستخدم القيمة الافتراضية للمعلمة ، والتي قد تكون أو لا تكون فارغة.
نصائح أخرى
ذلك يعتمد على الوظيفة التي تريدها.
إذا مررت null
نظرًا لأن القيمة ، فإن SQLCommand ستتعامل مع أن المعلمة لم يتم تمريرها على الإطلاق. إذا كانت معلمة مطلوبة في ، على سبيل المثال ، إجراء تخزين ، فإن ذلك سيؤدي إلى فشل استعلامك.
إذا مررت DBNull.Value
ثم سوف يعامل SQLCommand ذلك مع تمرير SQL NULL.
لا تنتمي إلى StackOverflow