سلام وقتتون بخیر
ایراد این کد از کجاست که آپدیت نمیکنه؟
عکس آپلود میشه اما سطر توی دیتابیس آپدیت نمیشه!
string connectionstring = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString; protected void Page_Load(object sender, EventArgs e) { DAL run = new DAL(); DataTable dt = new DataTable(); string sqltext = string.Format("Select * From tbl_content Where ID={0} ", Request.QueryString["id"]); dt = run.ExecuteQuery(sqltext); id.Value = dt.Rows[0]["id"].ToString(); title.Text = dt.Rows[0]["title"].ToString(); description.Text = dt.Rows[0]["description"].ToString(); text.Text = dt.Rows[0]["text"].ToString(); keywords.Text = dt.Rows[0]["keywords"].ToString(); active.Text = dt.Rows[0]["active"].ToString(); } protected void Button1_Click(object sender, EventArgs e) { DAL d1 = new DAL(); if (Page.IsValid == true) { string fid = Convert.ToString(id.Value); string ftitle = Convert.ToString(title.Text); string fdescription = Convert.ToString(description.Text); string ftext = Convert.ToString(text.Text); string fkeywords = Convert.ToString(keywords.Text); string fdateupdate = DateTime.Now.ToString("dd MMMM yyyy"); string factive = Convert.ToString(active.Text); if (picture.HasFile) { string ImageName = picture.PostedFile.FileName; string filePath = Server.MapPath("~/picture/" + ImageName); picture.SaveAs(filePath); using (var con = new SqlConnection(connectionstring)) { try { string commandText = string.Format("update tbl_content set title=N'{0}',description=N'{1}',text=N'{2}',keywords=N'{3}',dateupdate={4},active={5},picture=N'{6}' where id={7}) values ('" + ftitle + "','" + fdescription + "','" + ftext + "','" + fkeywords + "','" + fdateupdate + "','" + factive + "','picture/" + ImageName + "','" + fid +"')"); var com = new SqlCommand(commandText, con); con.Open(); int result = com.ExecuteNonQuery(); if (result > 0) { alert1.Style["display"] = "block"; RequiredFieldValidator2.Style["display"] = "none"; } else { alert2.Style["display"] = "block"; } } catch (Exception ex) { } } } else { lblMessage.Style["display"] = "block"; } } else { if (title.Text == "") { form_title.Attributes["class"] = "form-group has-error"; RequiredFieldValidator2.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (keywords.Text == "") { form_keywords.Attributes["class"] = "form-group has-error"; RequiredFieldValidator3.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (description.Text == "") { form_description.Attributes["class"] = "form-group has-error"; RequiredFieldValidator4.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (text.Text == "") { RequiredFieldValidator1.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (active.Text == "") { RequiredFieldValidator5.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (picture.PostedFile.FileName == "") { lblMessage.Style["display"] = "block"; alert2.Style["display"] = "block"; } } }
شما Try و Catch بردار تا اگه خطایی داره مشخص بشه
به احتمال زیاد در Execute خطایی وجود دارد
هرچی هست به اون متغیر fid که تعریف کردید مربوط میشه. از طرفی اومدید از id.value گرفتید که فکر می کنم یک HiddenField باشه در حالیکه از اون طرف با QueryString اومدید Id رو پاس دادید که یه کار اضافه هست. صد در صد تو دستور SQL که نوشتید و از Parameters هم توش استفاده نکردید، مشکلی وجود داره.
من try و catch رو برداشتم این ارور رو میده:
خب اگر با QueryString آی دی رو شناسایی نکنم راه دیگه ای نداره که :|
کد رو به این صورت ادیت کردم :
string connectionstring = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString; protected void Page_Load(object sender, EventArgs e) { DAL run = new DAL(); DataTable dt = new DataTable(); string sqltext = string.Format("Select * From tbl_content Where ID={0} ", Request.QueryString["id"]); dt = run.ExecuteQuery(sqltext); id.Value = dt.Rows[0]["id"].ToString(); title.Text = dt.Rows[0]["title"].ToString(); description.Text = dt.Rows[0]["description"].ToString(); text.Text = dt.Rows[0]["text"].ToString(); keywords.Text = dt.Rows[0]["keywords"].ToString(); active.Text = dt.Rows[0]["active"].ToString(); } protected void Button1_Click(object sender, EventArgs e) { if (Page.IsValid == true) { DAL d1 = new DAL(); if (picture.HasFile) { string ImageName = picture.PostedFile.FileName; string filePath = Server.MapPath("~/picture/" + ImageName); picture.SaveAs(filePath); using (var con = new SqlConnection(connectionstring)) { string commandText = string.Format("update tbl_content set title=N'{0}',description=N'{1}',text=N'{2}',keywords=N'{3}',dateupdate=N'{4}',active={5},picture=N'{6}' where id={7}", title.Text, description.Text, text.Text, keywords.Text, DateTime.Now.ToString("dd MMMM yyyy"), active.Text,"picture/" + ImageName ,id.Value); var com = new SqlCommand(commandText, con); con.Open(); int result = com.ExecuteNonQuery(); if (result > 0) { alert1.Style["display"] = "block"; RequiredFieldValidator2.Style["display"] = "none"; } else { alert2.Style["display"] = "block"; } } } else { lblMessage.Style["display"] = "block"; } } else { if (title.Text == "") { form_title.Attributes["class"] = "form-group has-error"; RequiredFieldValidator2.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (keywords.Text == "") { form_keywords.Attributes["class"] = "form-group has-error"; RequiredFieldValidator3.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (description.Text == "") { form_description.Attributes["class"] = "form-group has-error"; RequiredFieldValidator4.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (text.Text == "") { RequiredFieldValidator1.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (active.Text == "") { RequiredFieldValidator5.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (picture.PostedFile.FileName == "") { lblMessage.Style["display"] = "block"; alert2.Style["display"] = "block"; } } }
این ارور رو میده:
گفتم که هر اشکالی دارید تو قست دستور SQL دارید. چون نوشتید DateTime.Now.ToString(
"dd MMMM yyyy"
) در حالیکه تو دیتابایس شما DateTime دارید. این قسمت کد رو تبدیل کنید به DateTime.Now
حتما عوض کنید و از Paramaters ها برای ارسال مقدار استفاده کنید.
نه مشکل از اون نبود!
چون من کلا Dateupdate رو حذفش هم کردم همچنان ارور میده:
string connectionstring = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString; protected void Page_Load(object sender, EventArgs e) { DAL run = new DAL(); DataTable dt = new DataTable(); string sqltext = string.Format("Select * From tbl_content Where ID={0} ", Request.QueryString["id"]); dt = run.ExecuteQuery(sqltext); id.Value = dt.Rows[0]["id"].ToString(); title.Text = dt.Rows[0]["title"].ToString(); description.Text = dt.Rows[0]["description"].ToString(); text.Text = dt.Rows[0]["text"].ToString(); keywords.Text = dt.Rows[0]["keywords"].ToString(); active.Text = dt.Rows[0]["active"].ToString(); } protected void Button1_Click(object sender, EventArgs e) { DAL d1 = new DAL(); if (Page.IsValid == true) { string fid = Convert.ToString(id.Value); string ftitle = Convert.ToString(title.Text); string fdescription = Convert.ToString(description.Text); string ftext = Convert.ToString(text.Text); string fkeywords = Convert.ToString(keywords.Text); string factive = Convert.ToString(active.Text); if (picture.HasFile) { string ImageName = picture.PostedFile.FileName; string filePath = Server.MapPath("~/picture/" + ImageName); picture.SaveAs(filePath); using (var con = new SqlConnection(connectionstring)) { string commandText = string.Format("update tbl_content set title=N'{0}',description=N'{1}',text=N'{2}',keywords=N'{3}',active={4},picture=N'{5}' where id={6}) values ('" + ftitle + "','" + fdescription + "','" + ftext + "','" + fkeywords + "','" + factive + "','picture/" + ImageName + "','" + fid + "')"); var com = new SqlCommand(commandText, con); con.Open(); int result = com.ExecuteNonQuery(); if (result > 0) { alert1.Style["display"] = "block"; RequiredFieldValidator2.Style["display"] = "none"; } else { alert2.Style["display"] = "block"; } } } else { lblMessage.Style["display"] = "block"; } } else { if (title.Text == "") { form_title.Attributes["class"] = "form-group has-error"; RequiredFieldValidator2.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (keywords.Text == "") { form_keywords.Attributes["class"] = "form-group has-error"; RequiredFieldValidator3.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (description.Text == "") { form_description.Attributes["class"] = "form-group has-error"; RequiredFieldValidator4.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (text.Text == "") { RequiredFieldValidator1.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (active.Text == "") { RequiredFieldValidator5.Style["display"] = "block"; alert2.Style["display"] = "block"; } if (picture.PostedFile.FileName == "") { lblMessage.Style["display"] = "block"; alert2.Style["display"] = "block"; } } }
مشکل در کوئری هست
در sql قرار دهید و مقادیر را پر کنید و اجرا کنید تا خطای اصلی مشخص شود
مشکل همون بود. DateUpdate رو حذف کردید و الان خطای شما عوض شد. خطای شما الان به تعداد پارامترها مربوط میشه. شما دارید بیشتر از تعدادی که مشخص کردید مقدار ارسال می کنید. از روش Parameters استفاده کنید.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)