PDA

View Full Version : درج کردن null در دیتابیس در فیلدهایی که عددی هستن؟؟



sarapepors
دوشنبه 21 فروردین 1391, 13:00 عصر
سلام . من یک جدول در دیتابیس دارم که به عنوان مثال سه فیلد عددی داره و برای همه عمیاتی که روی این جدول انجام میشه یک کلاس طراحی کردم که شامل 3 property هست به نام های num1,num2,num3 که متناظر با همون فیلدهای جدول هستند این مقادیر هم در دیتابیس میتونن null باشن برای اضافه کردن این مقادیر هم یک کوئری insert رو در یک sp نوشتم که و این مقادیر رو به عنوان پارامتریهایی از نوع int میفرستم بهش مشکل من زمانی هست که کاربر مقادیر اینها رو وارد نکنه چون پارامترها عددی هستن باید حتما مقداری رو به sp بفرستم براشون ولی میخوام وقتی وارد نشدن مقادیر در جدول null درج بشه خوب چی کار باید بکنم ؟( البته به جز این که شرایطی رو در sp چک کنم و بر اساس اونها چند کوئری برا insert بنویسم )
به کمک دوستان احتیاج دارم . مرسی از همگی

d_derakhshani
دوشنبه 21 فروردین 1391, 13:32 عصر
نوع num ها رو ?int بگیرید، هنگام اجرای sp در هنگام ثبت پارامترها به جای Null مقدار DBNull.Value رو ارسال کنید

cmd.Paramaters.AddWithValue("@p1",entity.num1!=null?entity.num1?DBNull.Value);

sarapepors
دوشنبه 21 فروردین 1391, 16:28 عصر
نوع num ها رو ?int بگیرید، هنگام اجرای sp در هنگام ثبت پارامترها به جای Null مقدار DBNull.Value رو ارسال کنید

cmd.Paramaters.AddWithValue("@p1",entity.num1!=null?entity.num1?DBNull.Value);

من num ها رو int64? معذفی کردم و از این کد استفاده میکنم:

new SqlParameter("@Code_Kol",(Code_Kol!=0) ? Code_Kol : DBNull.Value)
و این خطا رو هم دریافت میکنم:
Type of conditional expression cannot be determined because there is no implicit conversion between 'long?' and 'System.DBNull'
Code_Kol هم یکی از همون متغیرهای num هست که گفتم.

sarapepors
دوشنبه 21 فروردین 1391, 16:52 عصر
حل شد . اینو در sp نوشتم :
if (@Code_Kol=0)
set @Code_Kol=null

اگر کاربر مقداری رو وارد نکنه صفر میذارم و در sp هم اگر مقدار پرامتر صفر بود null رو بهش منتسب میکنم.:لبخندساده::تشویق: