各位大侠,小弟的以下代码执行时总是提示 必须声明标量变量 "@u_name"。不知道问题出到哪儿了,请大侠看看,谢谢!
protected void Button2_Click(object sender, EventArgs e)
        {
            SqlConnection myconneciton = new SqlConnection();
            myconneciton.ConnectionString = myclass.myconn.sqlconnection;
            myconneciton.Open();
            string sql = "select * from user_login where rtrim(ltrim(u_name)) = @u_name and rtrim(ltrim(u_pass)) = @u_pass";
            SqlCommand mycommand = new SqlCommand(sql, myconneciton);
            
            /*实例化一个dataset对象*/
            DataSet mydataset = new DataSet("myds");            /*实例化一个SqlDataAdapter对象*/
            SqlDataAdapter myadapter = new SqlDataAdapter();
            myadapter.SelectCommand = new SqlCommand(sql, myconneciton);
            myadapter.FillSchema(mydataset,SchemaType.Source,"myds");
            myadapter.Fill(mydataset,"user_login");            mycommand.Parameters.Add(new SqlParameter("@u_name",SqlDbType.NVarChar,10));
            mycommand.Parameters["@u_name"].Value = TextBox1.Text.Trim();            mycommand.Parameters.Add(new SqlParameter("@u_pass", SqlDbType.NVarChar, 20));
            mycommand.Parameters["@u_pass"].Value = TextBox2.Text.Trim();            myconneciton.Close();
        }

解决方案 »

  1.   

    protected void Button2_Click(object sender, EventArgs e) 
            { 
                SqlConnection myconneciton = new SqlConnection(); 
                myconneciton.ConnectionString = myclass.myconn.sqlconnection; 
                myconneciton.Open(); 
                string sql = "select * from user_login where rtrim(ltrim(u_name)) = @u_name and rtrim(ltrim(u_pass)) = @u_pass"; 
                SqlCommand mycommand = new SqlCommand(sql, myconneciton); 
                   mycommand.Parameters.Add(new SqlParameter("@u_name",SqlDbType.NVarChar,10)); 
                mycommand.Parameters["@u_name"].Value = TextBox1.Text.Trim();             mycommand.Parameters.Add(new SqlParameter("@u_pass", SqlDbType.NVarChar, 20)); 
                mycommand.Parameters["@u_pass"].Value = TextBox2.Text.Trim(); 

                /*实例化一个dataset对象*/ 
                DataSet mydataset = new DataSet("myds");             /*实例化一个SqlDataAdapter对象*/ 
                SqlDataAdapter myadapter = new SqlDataAdapter(); 
                myadapter.SelectCommand = new SqlCommand(sql, myconneciton); 
                myadapter.FillSchema(mydataset,SchemaType.Source,"myds"); 
                myadapter.Fill(mydataset,"user_login");                      myconneciton.Close(); 
            }顺序颠倒了。先给参数赋值,然后填充DataSet
      

  2.   

    protected void Button2_Click(object sender, EventArgs e) 
            { 
                SqlConnection myconneciton = new SqlConnection(); 
                myconneciton.ConnectionString = myclass.myconn.sqlconnection; 
                
                string sql = "select * from user_login where rtrim(ltrim(u_name)) = @u_name and rtrim(ltrim(u_pass)) = @u_pass"; 
                SqlCommand mycommand = new SqlCommand(sql, myconneciton); 
                  mycommand.Parameters.Add(new SqlParameter("@u_name",SqlDbType.NVarChar,10)); 
                mycommand.Parameters["@u_name"].Value = TextBox1.Text.Trim();             mycommand.Parameters.Add(new SqlParameter("@u_pass", SqlDbType.NVarChar, 20)); 
                mycommand.Parameters["@u_pass"].Value = TextBox2.Text.Trim(); 
                /*实例化一个dataset对象*/ 
                DataSet mydataset = new DataSet("myds");             /*实例化一个SqlDataAdapter对象*/ 
                SqlDataAdapter myadapter = new SqlDataAdapter(); 
                myadapter.SelectCommand = mycommand;
                myconneciton.Open();  
                myadapter.FillSchema(mydataset,SchemaType.Source,"myds"); 
                myadapter.Fill(mydataset,"user_login");                     myconneciton.Close(); 
            } 顺序颠倒了。先给参数赋值,然后填充DataSet,
    语句也给你稍微修改了