如何解决未提供的期望参数' @ id'

时间:2017-08-25 13:20:38

标签: c# sql sql-server stored-procedures

我正在开发wpf应用程序,我需要插入和更新数据。我已经成功插入数据但是当我执行更新时遇到错误,例如期望参数' @ id',这是未提供的。我已经正确地给了所有的东西,但仍然得到同样的错误

我在下面给出了我的代码

存储过程代码

Alter procedure Updatedata  
(  
   @id VARCHAR(10),  
   @name VARCHAR(10),  
   @address VARCHAR(10),  
   @city varchar(20),  
   @state VARCHAR(20),
   @country varchar(10)

)  
AS  
BEGIN 
update Employee set  name= @name, address = @address, city = @city , state= @state, country = @country where id=@id 
END

C#代码

private void btn_Update_Click(object sender, RoutedEventArgs e)
    {
        var con = new SqlConnection(strConnString);

        SqlCommand cmd = new SqlCommand("Updatedata", con);
        con.Open();
        cmd.Parameters.AddWithValue(@"id", txt_id.Text);
        cmd.Parameters.AddWithValue(@"name", txt_name.Text);
        cmd.Parameters.AddWithValue("@address", txt_address.Text);
        cmd.Parameters.AddWithValue("@city", txt_city.Text);
        cmd.Parameters.AddWithValue("@state", txt_state.Text);
        cmd.Parameters.AddWithValue("@country", txt_country.Text);
        int row = cmd.ExecuteNonQuery();

        con.Close();
    }

1 个答案:

答案 0 :(得分:3)

你的问题在这里:

cmd.Parameters.AddWithValue(@"id", txt_id.Text);

应该是

cmd.Parameters.AddWithValue("@id", txt_id.Text);

当你在这里时,也要改变它:

cmd.Parameters.AddWithValue(@"name", txt_name.Text);

cmd.Parameters.AddWithValue("@name", txt_name.Text);

您还需要将CommandType的{​​{1}}设置为cmd

默认情况下,它以文本形式执行。

StoredProcedure