我有一些文本框在页面加载时填充了来自数据库(名称,地址)的客户信息。我希望用户只需更改此设置,然后单击按钮即可更新其个人信息。
我在按钮点击时运行以下代码:
con.Open();
string query = "UPDATE CustomerInfo SET FirstName=@FirstName, LastName=@LastName, Address=@Address, PostalCode=@PostalCode, PostalName=@PostalName WHERE UserName=@UserName";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;
cmd.Parameters.AddWithValue("@LastName", SqlDbType.VarChar).Value = txtLastName.Text;
cmd.Parameters.AddWithValue("@Address", SqlDbType.VarChar).Value = txtAddress.Text;
cmd.Parameters.AddWithValue("@PostalCode", SqlDbType.Int).Value = txtPostalCode.Text;
cmd.Parameters.AddWithValue("@PostalName", SqlDbType.VarChar).Value = txtPostalName.Text;
cmd.Parameters.AddWithValue("@UserName", SqlDbType.VarChar).Value = UserName;
cmd.ExecuteNonQuery();
con.Close();
这不起作用。如果我将文本框更改为不同的文本框并单击按钮,则没有任何反应。该表未使用新值更新,我没有收到任何错误消息。但是,如果我将参数值从例如txtFirstName.Text
更改为"Bob"
,它会成功将我的表中的FirstName列更新为Bob。
不确定我缺少什么,但出于某种原因使用textbox.Text作为值不起作用。
答案 0 :(得分:2)
AddWithValue
将参数值作为第二个参数,而不是SqlDbType
。
您正在将其与Add
方法混合使用。
cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;
还可以使用using
statement来处置您的SqlConnection
和SqlCommand
。
编辑:好的,这不是你所说的那一点(由于5个答案删除限制,我无法删除我的答案)。我真的怀疑你的文本框值会在页面生命周期中发生变化。顺便问一下,你在哪里定义了这些代码?请确保您的文本框值保留其值,因为这些代码已执行。