1 ضمیمه
خطای Data type mismatch در اجرای کوئری
در این کد من می خوام کاربر با کلیک روی هر سطر دیتا گرید و انتخاب دکمه ویراش اطلاعات در تکست باکس ها نمایش بده ولی خطای زیر رو میده چطور باید حلش کنم ( واقع اگه یه تکست باکس جدا بزارم مثلا ای دی رو وارد کنم این کار انجام میشه ولی نمی خوام این کارو انجام بدم)
ضمیمه 114472
و سوال دیگم اینه که چکار کنم عکسم از توی دیتا بیس تو محل مورد نظر نمایش داده بشه بجای این خط کد چی بنویسم
com.CommandText = "select * from tb_us where id ='" + id + "'";
OleDbDataReader dr;
con.Open();
dr = com.ExecuteReader();
if (dr.Read())
{
txt_name.Text = dr["fname"].ToString();
txt_family.Text = dr["family"].ToString();
txt_father.Text = dr["father"].ToString();
txt_national.Text = dr["idcode"].ToString();
txt_post.Text = dr["code"].ToString();
txt_mobil.Text = dr["mobil"].ToString();
txt_mail.Text = dr["email"].ToString();
//picUser.Image =dr["pic"];اینجا چی بنویسم
}
نقل قول: مشکل این کد در اجرا چیست؟(عمل ویرایش در سی شارپ با پایگاه داده اکسس)
دوستان مشکل بالا مربوط به خطا رو با جستجوی فراوان پیدا کردم حالا سوالم اینه که تفاوت این دو خط در چی هست
مرسی
با این کد به درستی انجام میشه
com.CommandText = "select * from tb_us where id =" +dataGridView1.CurrentRow.Cells[0].Value;
با این کد زیر خطا می داد
int id = (int)dataGridView1.CurrentRow.Cells[0].Value;
com.CommandText = "select * from tb_us where id = '" + id + "'";
نقل قول: مشکل این کد در اجرا چیست؟(عمل ویرایش در سی شارپ با پایگاه داده اکسس)
اگر نام و نام خانوادگی و نام پدر و .... در دیتاگرید هست نیازی نیست دوباره روی دیتابیس کوئری بزنید.
اگر یک مقدار توجه کنید متوجه تفاوت میشد. تفاوت این دو در تک کوتیشن هایی هست که در کوئری گذاشتید در حالی که id رشته نیست بلکه عدده.
نقل قول: مشکل این کد در اجرا چیست؟(عمل ویرایش در سی شارپ با پایگاه داده اکسس)
مدیر عزیز پس اگر در قسمت دوم هم اگر این طور می نوشتم درست بود
com.CommandText = "select * from tb_us where id = " + id
;
پس میشه بگیم اگر کلید ما بنا به دلایلی عدد نباشه بلکه تکست باشه اون موقع اون کد درست اجرا می شد
نقل قول: مشکل این کد در اجرا چیست؟(عمل ویرایش در سی شارپ با پایگاه داده اکسس)
نقل قول:
نوشته شده توسط
vid4259
مدیر عزیز پس اگر در قسمت دوم هم اگر این طور می نوشتم درست بود
com.CommandText = "select * from tb_us where id = " + id
;
پس میشه بگیم اگر کلید ما بنا به دلایلی عدد نباشه بلکه تکست باشه اون موقع اون کد درست اجرا می شد
کودری به این شکل درسته. ولی چون id ستونی عددی هست نباید دارای کاراکتر غیرعددی باشه. اگر داشته باشه sqlserver استثناء تولید میکنه. الته چون از دیتاگرید دریافت میشه نگران نباشید. اگر id از کاربر دریافت بشه باید چک کنید فقط عدد وارد شده باشه.