首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

务须声明标量变量 "@name"

2012-12-23 
必须声明标量变量 @name。本帖最后由 as86238582 于 2012-11-29 00:34:15 编辑我定义了一个sql类.. 这是s

必须声明标量变量 "@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:         SqlDataReader read = cmd.ExecuteReader();
行 29:         if (read.Read())
行 30:         {


 
-----------------------------

 求解
[最优解释]

  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";

            //给参数赋值
           cmd.Paramters.AddWithValue("@name", name);
           cmd.Paramters.AddWithValue("@pwd", pwd);


        SqlDataReader read = cmd.ExecuteReader();
        if (read.Read())
        {
            return true;
        }
        else {
            return false;
        }
 
    }

[其他解释]
加上
cmd.Paramters.AddWithValue("@name", name);
cmd.Paramters.AddWithValue("@pwd", pwd);
SqlDataReader read = cmd.ExecuteReader();
...
[其他解释]
数据操作用的参数法,需要声明参数,并对参数赋值
[其他解释]
没有将参数加进去
[其他解释]
引用:
加上
cmd.Paramters.AddWithValue("@name", name);
cmd.Paramters.AddWithValue("@pwd", pwd);
SqlDataReader read = cmd.ExecuteReader();
...


+++
[其他解释]
没有绑定参数
[其他解释]
参数都没有穿进去  当然会抱着个错了
[其他解释]

sql语句里有参数,代码里面没声明参数。。。当然不对了。。。

热点排行