0

WPF 的新手。我想编辑显示在文本框中的数据库行的值。目前我收到一个错误:“ExecuteNonQuery:Connection 属性尚未初始化”。当我删除 where 子句时,所有行都会更新,而不仅仅是所选项目。

private void btnEDIT_Click(object sender, RoutedEventArgs e)
{
    try
    {
        sc.Open();
        cmd = new SqlCommand("Update Rewards set Name = '" + this.txtName.Text + "', Cost= '" + this.txtCost.Text + "'where Name = '" + this.txtName.Text +"'");
        cmd.ExecuteNonQuery();
        MessageBox.Show("Update Successfull");
        sc.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
4

3 回答 3

0

您尚未设置 的Connection属性SqlCommand。所以该命令不知道在哪里连接。使用构造函数重载SqlCommand或像这样将其分开

cmd.Connection = sc;
于 2013-07-30T15:02:11.120 回答
0
cmd = new SqlCommand("Update Rewards set Name = '" + this.txtName.Text + "', Cost= '" + this.txtCost.Text + "'where Name = '" + this.txtName.Text +"'",sc); // add connection here

您还应该使用可以防止 SQL 注入攻击的参数化查询或存储过程。

 SqlCommand cmd = new SqlCommand("Update Rewards set Name = @name, Cost= @cost where Name = @name ,sc);
 cmd.Parameters.AddWithValue("@name", Convert.ToString(this.txtName.Text)); and so on
于 2013-07-30T15:11:19.567 回答
0

我希望这是你需要的:) 复制粘贴。祝你好运,兄弟!:) 如果您有任何问题,请问,如果我知道 LOL 我会回答 :)

  private void btnEDIT_Click(object sender, RoutedEventArgs e)
{
    try
    {
        sc.Open();
        sql = "UPDATE REWARDS SET Name = '" + this.txtName.Text + "', Cost= '" + this.txtCost.Text + "'WHERE Name = '" + this.txtName.Text +"'");
        SqlCommand command = new SqlCommand(sql, con);
        command.ExecuteNonQuery();
        MessageBox.Show("Update Successfull");
        sc.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
于 2013-07-30T15:46:38.507 回答