PDA

View Full Version : سوال: دلیل این خطا برای دستور آپدیت



cisco ++
چهارشنبه 16 مرداد 1392, 12:03 عصر
دوستان موقع اجرا برای این کد آپدیت خطای input string was not in a correct forma t میده . چرا ؟
من 8 تا فیلد دارم که اولی کلید اصلی از نوع int هست و بقیه nvarchar


objcom.Connection = objcon;
objcon.ConnectionString = "Server=.;database=Helaal;Integrated security=SSPI";
objcon.Open();
string sql = "UPDATE TblBimarNurse set BimarFName='{1}',BimarLName='{2}',BimarTel='{3}',D ateOfVisit='{4}',NurseName='{5}',khadamt='{6}',par dakht='{7}' where row={8}";
sql = string.Format(sql,
dataGridView1[0, 0].Value,
dataGridView1[1, 0].Value,
dataGridView1[2, 0].Value,
dataGridView1[3, 0].Value,
dataGridView1[4, 0].Value,
dataGridView1[5, 0].Value,
dataGridView1[6, 0].Value,
dataGridView1[7, 0].Value,
Int32 .Parse (textBox1 .Text ) );


objcom.CommandText = sql;
objcom.ExecuteNonQuery();
objcon.Close();

saied_hacker
چهارشنبه 16 مرداد 1392, 12:17 عصر
به value ها یک toString اضافه کن و در خط اخر هم لازم نیست به Int تبدیل کنی این کارو خود sql انجام میده ( فک کنم این خطا بیشتر مال همون خط تبدیل به Int باشه ) ....

saied_hacker
چهارشنبه 16 مرداد 1392, 12:25 عصر
نه اون مشکل ساز نیست چون در رشته sql شماره ارگومان رو از 1 گذاشته ارگومان/پارامتر اول در تابع format در نظر گرفته نمیشه....

cisco ++
چهارشنبه 16 مرداد 1392, 12:27 عصر
به value ها یک toString اضافه کن و در خط اخر هم لازم نیست به Int تبدیل کنی این کارو خود sql انجام میده ( فک کنم این خطا بیشتر مال همون خط تبدیل به Int باشه ) ....

انجام دادم ولی باز همون خطا رو داد
؟؟؟؟؟؟؟؟؟

pesare
چهارشنبه 16 مرداد 1392, 12:36 عصر
انجام دادم ولی باز همون خطا رو داد
؟؟؟؟؟؟؟؟؟

یه حرف N پشت آکولادها بزار دوست عزیز
BimarFName=N'{1}'
اینجوری بنویس

cisco ++
چهارشنبه 16 مرداد 1392, 12:37 عصر
دوستان ممنون ولی حل شد!
من کلید اصلیم auto increment بود و سطر آخر از دستور آپدیت رو حذف کردم (همون تبدیل int32) و همچنین شرط where رو هم حذف کردم و درست شد

cisco ++
چهارشنبه 16 مرداد 1392, 12:38 عصر
یه حرف N پشت آکولادها بزار دوست عزیز
BimarFName=N'{1}'
اینجوری بنویس
ممنون جور دیگه ای حل شد
حالا چرا لینک "تشکر" براتون دیده نمیشه؟؟!

pesare
چهارشنبه 16 مرداد 1392, 12:41 عصر
اینم از شانس بد من والــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــا:لبخندساده:

pesare
چهارشنبه 16 مرداد 1392, 12:45 عصر
دوستان ممنون ولی حل شد!
من کلید اصلیم auto increment بود و سطر آخر از دستور آپدیت رو حذف کردم (همون تبدیل int32) و همچنین شرط where رو هم حذف کردم و درست شد

شما که شرط رو حذف کردی اونوفت کل جدولت رو آپدیت میکنه که!!!!!!!!!!دستور آپدیت بدون شرط که نمیشه , این کار خطرناکه دوست من

cisco ++
چهارشنبه 16 مرداد 1392, 13:06 عصر
شما که شرط رو حذف کردی اونوفت کل جدولت رو آپدیت میکنه که!!!!!!!!!!دستور آپدیت بدون شرط که نمیشه , این کار خطرناکه دوست من

وای بله.............. همه جدولم آپدیت شده ! اصلا دقت نکرده بودم
پس ایراد کار کجاس؟؟:گیج:

pesare
چهارشنبه 16 مرداد 1392, 13:10 عصر
از دیتا گرید ویو داری رکورد انتخاب میکنی برای آپدیت کردن؟

cisco ++
چهارشنبه 16 مرداد 1392, 13:14 عصر
از دیتا گرید ویو داری رکورد انتخاب میکنی برای آپدیت کردن؟

بله . رکورد رو همونجا ویرایش میکنم و دکمه ویرایش رو میزنم

cisco ++
چهارشنبه 16 مرداد 1392, 13:21 عصر
دوست عزیز : کدهامو این شکل تغییر دادم یعنی با پارامترها به این صورت نوشتم و حل شد :


int i = 0;
i =dataGridView1 . CurrentRow.Index;
var row = dataGridView1.Rows[i].Cells[0].Value.ToString();
var BimarFName = dataGridView1.Rows[i].Cells[1].Value.ToString();
var BimarLName = dataGridView1.Rows[i].Cells[2].Value.ToString();
var BimarTel = dataGridView1.Rows[i].Cells[3].Value.ToString();
var DateOfVisit = dataGridView1.Rows[i].Cells[4].Value.ToString();
var NurseName = dataGridView1.Rows[i].Cells[5].Value.ToString();
var khadamt = dataGridView1.Rows[i].Cells[6].Value.ToString();
var pardakht = dataGridView1.Rows[i].Cells[7].Value.ToString();
objcom.CommandText = @"update TblBimarNurse set BimarFName=@u1 , BimarLName =@u2 , BimarTel=@u3 , DateOfVisit=@u4 , NurseName=@u5,
khadamt=@u6 , pardakht=@u7 where row=@row";
objcom.Parameters.AddWithValue("@row", row);
objcom.Parameters.AddWithValue("@u1", BimarFName);
objcom.Parameters.AddWithValue("@u2", BimarLName);
objcom.Parameters.AddWithValue("@u3", BimarTel);
objcom.Parameters.AddWithValue("@u4", DateOfVisit);
objcom.Parameters.AddWithValue("@u5", NurseName);
objcom.Parameters.AddWithValue("@u6", khadamt);
objcom.Parameters.AddWithValue("@u7", pardakht);
objcom.Connection = objcon;
objcon.Open();
objcom.ExecuteNonQuery();

cisco ++
چهارشنبه 16 مرداد 1392, 13:23 عصر
ولی همچنان دنبال جواب مسئله قبلی هستم که چرا دستور آپدیت با شکل قبلی جواب نداد ؟؟؟
اگه کسی متوجه شد حتی اگه از زمان این پست هم گذشته باشه لطفا برام بگه یا پیام بزاره
ممنون

pesare
چهارشنبه 16 مرداد 1392, 13:23 عصر
کلید اصلیت رو میریزی تو دیتا گریدویو؟
کلید اصلیت رو بریز تو دیتا گرید ویو بعد با این کد موقعیتش رو تو دیتا بیست پیدا کن بعد داده ها رو از جدول فراخوانی کن برای آپدیت :

string val = dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString();
حالا اگه کلید اصلیت از نوع int بود متغیر val رو به int تبدیل کن با این کد
کلید اصلی=int32.parse(val)