【问题标题】:Update in ASP.NET results in an exception: "must declare scalar variable"ASP.NET 中的更新导致异常:“必须声明标量变量”
【发布时间】:2021-05-18 03:16:21
【问题描述】:

我正在尝试更新我的Student 表中的某条记录,但是同样的异常不断弹出:

System.Data.SqlClient.SqlException:必须声明标量变量“@sid”

请提供任何建议,因为我的代码似乎找不到任何错误。

这是我的更新查询的代码:

if (conn.State == System.Data.ConnectionState.Closed)
{
    conn.Open();

    String sid = txtSearch.Text;

    SqlCommand cmd2 = new SqlCommand("UPDATE [Student] SET [Password] = @pass, [StudentName] = @studName, [Email] = @email, [PhoneNumber] = @number, [Faculty] = @faculty, [Course] = @course WHERE [StudentID] = @sid", conn); 

    cmd2.Parameters.AddWithValue("@pass", txtPassword.Text);
    cmd2.Parameters.AddWithValue("@studName", txtStudentName.Text);
    cmd2.Parameters.AddWithValue("@email", txtEmail.Text);
    cmd2.Parameters.AddWithValue("@number", txtPhoneNum.Text);
    cmd2.Parameters.AddWithValue("@faculty", ddlFaculty.SelectedValue);
    cmd2.Parameters.AddWithValue("@course", ddlCourse.SelectedValue);

    cmd2.ExecuteNonQuery(); 

    Response.Write("<script>alert('Record updated successfully!')</script>");
    conn.Close();

    Clear();
}

【问题讨论】:

  • 您尚未在此处为@sid 赋值 WHERE [StudentID]=@sid
  • @Sergey 嗨,我实际上是在将一个文本框值“txtSearch.Text”分配给 sid,如更新查询之前的语句所示。这也不准确吗?
  • 请看下面的答案。您需要添加类似 cmd2.Parameters.AddWithValue("@sid", sid )
  • 刚刚检查了下面的答案,它工作得很好!感谢您的帮助:)
  • 您应该查看Can we stop using AddWithValue() already? 并停止使用.AddWithValue() - 它可能会导致意想不到和令人惊讶的结果...

标签: asp.net sql-server sqlexception


【解决方案1】:

你错过了@sid 参数

    if (conn.State == System.Data.ConnectionState.Closed)
    {
        conn.Open();

        String sid = txtSearch.Text;
        SqlCommand cmd2 = new SqlCommand("UPDATE [Student] SET [Password]=@pass
            , [StudentName]=@studName
            , [Email]=@email
            , [PhoneNumber]=@number
            , [Faculty]=@faculty
            , [Course]=@course 
        WHERE [StudentID]=@sid", conn); 
        cmd2.Parameters.AddWithValue("@pass", txtPassword.Text);
        cmd2.Parameters.AddWithValue("@studName", txtStudentName.Text);
        cmd2.Parameters.AddWithValue("@email", txtEmail.Text);
        cmd2.Parameters.AddWithValue("@number", txtPhoneNum.Text);
        cmd2.Parameters.AddWithValue("@faculty", ddlFaculty.SelectedValue);
        cmd2.Parameters.AddWithValue("@course", ddlCourse.SelectedValue);
        cmd2.Parameters.AddWithValue("@isid", sid);     // <------
        cmd2.ExecuteNonQuery(); 

        Response.Write("<script>alert('Record updated successfully!')</script>");
        conn.Close();

        Clear();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    相关资源
    最近更新 更多