使用TextBox值更新表

时间:2014-05-09 14:03:53

标签: c# asp.net sql-update

我有一些文本框在页面加载时填充了来自数据库(名称,地址)的客户信息。我希望用户只需更改此设置,然后单击按钮即可更新其个人信息。

我在按钮点击时运行以下代码:

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作为值不起作用。

1 个答案:

答案 0 :(得分:2)

AddWithValue将参数值作为第二个参数,而不是SqlDbType

您正在将其与Add方法混合使用。

cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;

还可以使用using statement来处置您的SqlConnectionSqlCommand

编辑:好的,这不是你所说的那一点(由于5个答案删除限制,我无法删除我的答案)。我真的怀疑你的文本框值会在页面生命周期中发生变化。顺便问一下,你在哪里定义了这些代码?请确保您的文本框值保留其值,因为这些代码已执行。