我发现一个解决这个问题的解决方法:将来自数据库的数据加载到一组控件中,并将更新信息输入到一组单独的控件中。感谢您的评论;该应用程序正在工作。c#中的更新命令不更新数据库
试图更新数据库行。我根据我在几个论坛/网站上找到的内容编写了以下代码。他的代码没有更新数据库。该数据库将正确地更新,如果@editFirstName的值是文字,如
UpdateCmd.Parameters["@editFirstName"] = "George";
我也试过
UpdateCmd.Parameters["@editFirstName"] = "'" + editFirstNameContent.Text + "'";
:
尝试任何修复这个错误我发现了以下后
哪些没有工作。
我也试图把文本框的数据到一个变量,使用这个变量:
string firstNameValue = editFirstNameContent.Text;
UpdateCmd.Parameters["@editFirstName"] = firstNameValue;
,没有工作。
因此,UPDATE命令显然是更新数据库。但是,显然Parameters.Value行不读取TextBox中的数据,因此它不会使用更改的值进行更新。
protected void editCustomerButton_Click(object Sender, EventArgs e)
{
string connString = WebConfigurationManager.ConnectionStrings["proofreadThePlanetConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connString))
{
connection.Open();
string updateString = "UPDATE tblCustomerInfo SET [email protected], [email protected], [email protected], [email protected] WHERE customerID=" + Request.QueryString["EID"];
SqlCommand UpdateCmd = new SqlCommand(updateString, connection);
UpdateCmd.Parameters.Add("@editCustomerID", SqlDbType.Int);
UpdateCmd.Parameters["@editCustomerID"].Value = editCustomerIDContent.Text;
UpdateCmd.Parameters.Add("@editFirstName", SqlDbType.VarChar, 25);
UpdateCmd.Parameters["@editFirstName"].Value = editFirstNameContent.Text;
UpdateCmd.Parameters.Add("@editLastName", SqlDbType.VarChar, 50);
UpdateCmd.Parameters["@editLastName"].Value = editLastNameContent.Text;
UpdateCmd.Parameters.Add("@editEmail", SqlDbType.VarChar, 75);
UpdateCmd.Parameters["@editEmail"].Value = editEmailContent.Text;
UpdateCmd.ExecuteNonQuery();
}
}
为什么你使用所有这些参数,然后在你的命令结尾仍然有concat。 –
当您通过Parameters.Add添加更新的值时,您还应该通过Parameters.Add传递QueryString参数以避免SQL注入。你为什么更新customerID,这可能是你的PK? – devio
你有错误吗?尝试放一个'try {...} catch(Exception ex)...'阻止它 - 有例外吗?什么样的数据类型是'customerID'?如果它应该是一个字符串,那么你需要在它周围加单引号!或更好:**使用参数!** –