ASP.NET 中的更新导致异常:“必须声明标量变量”

问题描述

我正在尝试更新我的 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 param

    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();
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...