-
SqlException
سلام دوستان
من در برنامه ی کتابخونه ایی که دارم کار میکنم قسمت ویرایش اطلاعات کاربر به یه اکسپشن عجیب بر خوردم
این کد رو نگاه کنید
کد:
private void UpdateDatabase()
{
using (SqlConnection connection = new SqlConnection(sstrConnection))
{
byte[] imageData = ReadFile(txtImagePath.Text);
SqlCommand com = new SqlCommand();
com.CommandType = CommandType.Text;
com.Connection = connection;
com.CommandText = "update RegisterUser set FirstName=@FirstName , LastName=@LastName , NameOfFather=@NameOfFather , Jensiat=@Jensiat , DateOfBurn=@DateOfBurn , shomareshenasname=@shomareshenasname , MojaradYamotahal=@MojaradYamotahal , TellNumber=@TellNumber , MObileNumber=@MObileNumber , shoghl=@shoghl , tahsilat=@tahsilat , tarikheozviat=@tarikheozviat , tozihat=@tozihat , address=@address , ImageOriginalPath=@ImageOriginalPath , ImageData=@ImageData ";
com.Parameters.Add("@FirstName", SqlDbType.NVarChar ,50).Value = txtNameRegisterUser.Text;
com.Parameters.Add("@LastName", SqlDbType.NVarChar ,50).Value = txtFamilyRegisterUser.Text;
com.Parameters.Add("@NameOfFather", SqlDbType.NVarChar ,50).Value = txtNameOfFatherRegisterUser.Text;
com.Parameters.Add("@Jensiat", SqlDbType.NChar, 5).Value = cboJensiatRegisterUser.SelectedItem;
com.Parameters.Add("@DateOfBurn", SqlDbType.NChar, 8).Value = txtDateOfBurnRegisterUser_Masked.Text;
com.Parameters.Add("@shomareshenasname", SqlDbType.NVarChar, 100).Value = txtShomareShenasnameRegisterUser.Text;
com.Parameters.Add("@MojaradYamotahal", SqlDbType.NChar, 20).Value = CboMojaradYaMotahalRegisterUser.SelectedItem;
com.Parameters.Add("@TellNumber", SqlDbType.NChar, 20).Value = txtTellNumber_Masked.Text;
com.Parameters.Add("@MObileNumber", SqlDbType.NChar, 20).Value = txtMobileNumber_Masked.Text;
com.Parameters.Add("@shoghl", SqlDbType.NChar, 30).Value = cboShoghlRegisterUser.SelectedItem;
com.Parameters.Add("@tahsilat", SqlDbType.NChar, 30).Value = cboTahsilatRegisterUser.SelectedItem;
com.Parameters.Add("@tarikheozviat", SqlDbType.NChar, 8).Value = txtTarikheOzviatregisterUser_Masked.Text;
com.Parameters.Add("@tozihat", SqlDbType.NVarChar, 250).Value = txtTozihatRegisterUser.Text;
com.Parameters.Add("@address", SqlDbType.NVarChar, 250).Value = txtAddressRegisterUser.Text;
com.Parameters.Add(new SqlParameter("@ImageOriginalPath", (object)txtImagePath.Text));
com.Parameters.Add(new SqlParameter("@ImageData", (object)imageData));
connection.Open();
com.ExecuteNonQuery();
connection.Close();
}
}
ببینید
من یه دیتاگرید دارم که که وقتی روی سطر هاش کلیک میشه اطالاعات تو تکست باکس ها میاد برای ویرایش
این تابع رو تو رویداد کلیک باتن گذاشتم
وقتی کار ویرایش تموم شد و کلیک میکنم این اکسپشن میاد
به این اکسپشن میگیره com.ExecuteNonQuery();
کد:
Parameterized Query '(@FirstName nvarchar(50),@LastName nvarchar(50),@NameOfFather nv' expects parameter @Jensiat, which was not supplied
اساتید مشکل چیه؟
-
مقادیری که به این فیلدها میدی چیه که دچار خطاش میکنه
آیا از 50 تا کارکتر بیشتره
دستور Upadte شما کدوم سطر رو ویرایش میکنه ظاهرا تمام سطرها رو به این سطر مورد نظر تغیر میده چون شرطی براش تعیین نشده
-
ممنون از پاسختون
نه چیز خاصی که نمیفرستم فقط ویرایش میکنم مثلا 5 تا کاراکترو ..
من چیو باید تو شرط بنویسم ؟
ببینید من مثلا 1000 تا سطر دارم در دیتا گرید
وقتی کسی میخواد یک سطر رو ویرایش کنه روش کلیک میکنه و در تکست باکس ها میاد وبعد ویرایش میکنه
من چیجوری باید شرط رو بذارم؟
-
سلام
این شکلی واسش شرط رو بنویس
کد:
com.CommandText = "update RegisterUser set FirstName=@FirstName , LastName=@LastName , NameOfFather=@NameOfFather , Jensiat=@Jensiat , DateOfBurn=@DateOfBurn , shomareshenasname=@shomareshenasname , MojaradYamotahal=@MojaradYamotahal , TellNumber=@TellNumber , MObileNumber=@MObileNumber , shoghl=@shoghl , tahsilat=@tahsilat , tarikheozviat=@tarikheozviat , tozihat=@tozihat , address=@address , ImageOriginalPath=@ImageOriginalPath , ImageData=@ImageData WHERE ID=" & IDup2 & "" ";
-
من با کلیک شدن در دیتا گرید ID رو گرفتم و تو where گذاشتم ولی بازم جواب نداده بود
مشکلم خیلی وقته حل شده جواد جان
چون طول رشته خیلی بلند بود CommandText گیر میداد
تشکر