دسته بندی ها
19:38 1399/02/12

ارتباط با دیتابیس sql server و ارسال اطلاعات به تکست باکس ها

مشخصات سوال کننده :
کاربر : Alireza     امتیاز کاربر : 115     رتبه کاربر : 13
دسته بندی : WPF Sql Server

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

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

خطا به دلیل استفاده از متد `Convert.ToInt32` در شرط LINQ است. این متد نمی تواند به یک عبارت قابل فهم برای SQL Server تبدیل شود. برای حل این مشکل، ابتدا مقدار ورودی را پیش از استفاده در LINQ به نوع `int` تبدیل کنید. در اینجا یک مثال آورده شده است:

int khatTolidId;
if (int.TryParse(txtCodKhatTolid.Text.Trim(), out khatTolidId))
{
    var q = from kh_t in DB.KhatTolids
            where kh_t.KhatTolidID == khatTolidId
            select kh_t;
            
    foreach (var result in q)
    {
        lblNameKhatTolid.Content = result.KhatTolidName;
    }
}
else
{
    // مدیریت خطا: عدد معتبر نیست
    MessageBox.Show("لطفاً یک شناسه معتبر وارد کنید.");
}

در اینجا از `int.TryParse` برای تبدیل متن به عدد صحیح استفاده شده است. این متد بررسی می کند که آیا تبدیل موفقیت آمیز بوده یا خیر. اگر تبدیل موفقیت آمیز باشد، می توانید از مقدار به دست آمده در query استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : Sowgandi 22:23 1399/02/12

سلام. 

این خطا به خاطر اینه که شما مقدار 

Convert.ToInt32(txtCodKhatTolid.Text.Trim())

رو داخل کوئری نوشتید. LINQ روی این موارد حساسه و خطا میگیره. کدتون رو به شکل زیر تغییر بدید.

int ID = Convert.ToInt32(txtCodKhatTolid.Text.Trim());
var q = from kh_t in DB.KhatTolids
                    where kh_t.KhatTolidID == ID
                    select kh_t;
            foreach (var result in q)
            {
                lblNameKhatTolid.Content = result.KhatTolidName;
            }

در ضمن اگر خروجی کوئری شما فقط یک ردیف خاص است میتونید از کد زیر استفاده کنید.

int ID = Convert.ToInt32(txtCodKhatTolid.Text.Trim());
var q = (from kh_t in DB.KhatTolids
                    where kh_t.KhatTolidID == ID
                    select kh_t).SingleOrDefault();

lblNameKhatTolid.Content = q.KhatTolidName;
          

 

به این پاسخ امتیاز بدهید    1
امتیاز: 876 رتبه: 3
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود