【问题标题】:Update SqlCommand- Does not update in Database更新 SqlCommand- 不在数据库中更新
【发布时间】: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 事件,则无需处理它。它与DataTableTask 属于同一类别,它们也是一次性的,但您也不需要正常处理它们。
  • 已排序!谢谢@TimSchmelter - SelectedItem 不是 selectedText

标签: c# database sqlcommand


【解决方案1】:

您需要在combobox 上使用SelectedItem 而不是SelectedText

CB_EDIT_OWNER.SelectedText 替换为:

CB_EDIT_OWNER.SelectedItem

那么这应该可以工作。

【讨论】:

  • 如果你想让人们从组合框列表之外的项目中输入他们自己的值,那么你必须使用SelectedText
  • 您希望用户多久在组合框中输入自己的值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2021-12-22
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多