هل dbnull.value مطلوب لأنواع لاغية مثل sqlcommandparameter.value

StackOverflow https://stackoverflow.com/questions/2347187

  •  23-09-2019
  •  | 
  •  

سؤال

ما هو النهج الموصى به:

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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top