دسته بندی ها
00:35 1401/05/07

خطای Value returned null هنگام ثبت مقادیر خالی در دیتابیس

مشخصات سوال کننده :
کاربر : Radman     امتیاز کاربر : 169     رتبه کاربر : 9
دسته بندی : سی شارپ Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2568
هوش مصنوعی

پاسخ هوش مصنوعی

برای حل مشکل دریافت خطای System.NullReferenceException هنگام دسترسی به مقدار سلولی که ممکن است نال باشد، باید قبل از تبدیل مقدار به رشته، بررسی کنید که آیا سلول نال است یا خیر. می توانید از یک شرط استفاده کنید تا این بررسی را انجام دهید.

به عنوان مثال، کد شما می تواند به شکل زیر تغییر کند:

Msg_Contacts Msg_C = new Msg_Contacts();
Msg_C.address = dgvContact.CurrentRow.Cells[7].Value != null ? dgvContact.CurrentRow.Cells[7].Value.ToString() : null;

با این روش، اگر مقدار سلول نال باشد، آدرس در Msg_C.address نیز نال خواهد بود و خطای NullReferenceException رخ نخواهد داد. بنابراین هم می توانید مقادیر خالی را ذخیره کنید و هم از خطا جلوگیری کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 14:47 1401/05/07

دقت کنید که اگر خطای شما در خط زیر رخ میده :

Msg_C.address = dgvContact.CurrentRow.Cells[7].Value.ToString();

چند نکته رو باید توجه کنید.

  • اول اینکه دقت کنید که در DataGridView ستون با اندیس 7 وجود داشته باشه. برای شمارش اندیس ستونها در DataGridView از 0 باید شروع کنید. ضمنا ستونهای مخفی هم باید شمارش بشن.
  • نکته بعدی اینکه بهتره فیلد address در Sql Server رو به صورت varchar(max) تعریف کنید. (تفاوت نوع داده ای varchar و nvarchar در Sql Server چیست ؟)
  • در آخر هم بهتره برای ستونهایی که احتمال میدید نمیخاید هیچ مقداری رو در اونها ذخیره کنید کد رو به صورت زیر بنویسید :
Msg_C.address = dgvContact.CurrentRow.Cells[7].Value.ToString() + "";

همونطوری که ملاحظه می کنید در انتها "" گذاشتیم. که این باعث میشه مقادیر به string تبدیل بشن.

موارد بالا رو چک کنید اگر خطایی بود بفرمایید.

به این پاسخ امتیاز بدهید    1
امتیاز: 1664 رتبه: 1
1 نظر
Radman : ممنون از راهنمایی تون مشکلم برطرف شد .خیلی ممنون از سایت عالی پرس نت.

امتیاز کاربر : 169   رتبه کاربر : 9   تاریخ ثبت : 03:10 1401/05/07
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود