为什么不更新我的数据?

时间:2013-12-10 09:32:17

标签: c# asp.net

更新群组时出错。必须声明标量变量“@SubnameWHERE”...为什么会出现此错误.....

protected void cmdUpdate_Click(object sender, EventArgs e)
    {
        string updateSQL;
        updateSQL = "UPDATE tblnewgroup SET ";
        updateSQL += "Groupname=@Groupname, ";
        updateSQL += "Slno=@Slno, Subname=@Subname";
        updateSQL += "WHERE Groupno=@Groupno_original";

    SqlConnection con = new SqlConnection(connectionString);
    SqlCommand cmd = new SqlCommand(updateSQL, con);


    cmd.Parameters.AddWithValue("@Groupname", txtgname.Text);
    cmd.Parameters.AddWithValue("@Slno", txtsl.Text);
    cmd.Parameters.AddWithValue("@Subname", txtsn.Text);
    cmd.Parameters.AddWithValue("@Groupno_original", lstAuthor.SelectedItem.Value);

    int updated = 0;
    try
    {
        con.Open();
        updated = cmd.ExecuteNonQuery();
        lblResults.Text = updated.ToString() + " record updated.";
    }
    catch (Exception err)
    {
        lblResults.Text = "Error updating Group. ";
        lblResults.Text += err.Message;
    }
    finally
    {
        con.Close();
    }

    if (updated > 0)
    {
        FillAuthorList();
    }

}

4 个答案:

答案 0 :(得分:2)

Subname=@Subname

后需要一个空格

更改您的

updateSQL += "Slno=@Slno, Subname=@Subname";

updateSQL += "Slno=@Slno, Subname=@Subname ";

作为更好的可视化,您可以像使用它一样使用

string updateSQL = @"UPDATE tblnewgroup
                     SET Groupname=@Groupname, Slno=@Slno, Subname=@Subname
                     WHERE Groupno=@Groupno_original";

此外,您应该使用using块来处置您的SqlConnection喜欢;

using(SqlConnection con = new SqlConnection(connectionString))
{
  con.Open();
  updated = cmd.ExecuteNonQuery();
  ...
}

答案 1 :(得分:2)

正如Soner所说 - 你的sql无效 -

updateSQL += "Slno=@Slno, Subname=@Subname";
updateSQL += "WHERE Groupno=@Groupno_original";

这两行最终将为...... @SubnameWHERE Groupno= ....

这就是你的问题!

答案 2 :(得分:1)

问题:您已合并参数@SubnameWHERE条款。
解决方案:您需要在参数space@Subname子句之间提供WHERE

替换此

updateSQL += "Slno=@Slno, Subname=@Subname";

有了这个:

updateSQL += "Slno=@Slno, Subname=@Subname ";

答案 3 :(得分:1)

只需更改

updateSQL += "WHERE Groupno=@Groupno_original";

updateSQL += " WHERE Groupno=@Groupno_original";

提示:构造此类sql命令时,始终在每个字符串部分的开头放置一个空格。