日期:2014-05-17  浏览次数:20565 次

必须声明标量变量 "@name"。
本帖最后由 as86238582 于 2012-11-29 00:34:15 编辑  我定义了一个sql类..
 这是sql类中的登录方法

     public bool checklogin(string name,string pwd)
    {
        SqlConnection conn = new SqlConnection(sqlstr);
        conn.Open();
        // 创建命令(SqlCommand)对象(cmd)
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn; // 指示命令发给哪个数据库
        cmd.CommandType = CommandType.Text; // 指示是什么类型的命令
        cmd.CommandText = "SELECT [username],[password] FROM [user] WHERE [username]=@name and  [password]=@pwd";
        SqlDataReader read = cmd.ExecuteReader();
        if (read.Read())
        {
            return true;
        }
        else {
            return false;
        }

    }



在login.aspx.cs调用.
    protected void btnLogin_Click(object sender, EventArgs e)
    {

        string name = this.txtName.Text; //得到登陆帐号
        string pwd = this.txtpwd.Text; //得到登陆密码
        sql db = new sql();
        bool cklogin=db.checklogin(name,pwd); 
        if(cklogin=true){

            Response.Write("<script>alert('恭喜你登录成功')</script>");

                         }
          else{
              Response.Write("<script>alert('恭喜你登录失败')</script>");
               }
  
    }

为啥总是有如下错误提示
-----------------------------
必须声明标量变量 "@name"。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Data.SqlClient.SqlException: 必须声明标量变量 "@name"。

源错误: 

行 26:         cmd.CommandType = CommandType.Text; // 指示是什么类型的命令
行 27:         cmd.CommandText = "SELECT [username],[password] FROM [user] WHERE [username]=@name and  [password]=@pwd";
行 28:  &nb