【发布时间】:2017-02-20 14:38:57
【问题描述】:
这不会在我的数据库表中更新。我是不是看多了什么?
这些值在文本框中很好。没有显示错误,很奇怪。
using (SqlConnection connection = new SqlConnection(@"Data Source = UKMAN1NB10038\SQLEXPRESS; Initial Catalog = TheVets; Integrated Security = True"))
{
SqlCommand command = new SqlCommand("UPDATE OwnerTable SET Owner_Fname =@OwnerFname , Owner_Lname = @OwnerLname, Owner_HouseNo = @OwnerHouse, Owner_Street = @OwnerStreet, Owner_County = @OwnerCounty, Owner_PostCode = @OwnerPost, Owner_Tele = @OwnerTele, Owner_Email = @OwnerEmail WHERE Owner_ID = '" + CB_EDIT_OWNER.SelectedText + "'", connection);
command.CommandType = CommandType.Text;
command.Connection = connection;
command.Parameters.AddWithValue("@OwnerFname", TXT_EDIT_FNAME.Text);
command.Parameters.AddWithValue("@OwnerLname", TXT_EDIT_LNAME.Text);
command.Parameters.AddWithValue("@OwnerHouse", TXT_EDIT_HOUSE.Text);
command.Parameters.AddWithValue("@OwnerStreet", TXT_EDIT_STREET.Text);
command.Parameters.AddWithValue("@OwnerCounty", TXT_EDIT_COUNTY.Text);
command.Parameters.AddWithValue("@OwnerPost", TXT_EDIT_POSTCODE.Text);
command.Parameters.AddWithValue("@OwnerTele", TXT_EDIT_TELE.Text);
command.Parameters.AddWithValue("@OwnerEmail", TXT_EDIT_EMAIL.Text);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
}
【问题讨论】:
-
为什么你对所有的东西都使用参数,但是你对
CB_EDIT_OWNER.SelectedText使用字符串添加?为什么那也不是参数? (很可能 owner_id 不是参数是您问题的根源) -
可能是ID...检查它的运行时值。并考虑将其也添加为参数,这样的脚本编写可能不安全。
command也应该包含在 using() { } 中,就像连接一样。 -
使用调试器,看看
CB_EDIT_OWNER.SelectedText返回什么 -
@dlatikay 命令确实没有。 SqlCommand 是一次性的唯一原因是因为它继承自
System.ComponentModel.Component。如果没有订阅它的Disposed事件,则无需处理它。它与DataTable或Task属于同一类别,它们也是一次性的,但您也不需要正常处理它们。 -
已排序!谢谢@TimSchmelter - SelectedItem 不是 selectedText
标签: c# database sqlcommand