不能将参数传入存储过程,不知道代码是怎么回事哈。大家看看, 不知道哪里错了。 int returnNo=0;
SqlDataAdapter sqlDataA = new SqlDataAdapter();
    string execProc = "EXEC LoginCheckProc";
                       SqlCommand scmd = new SqlCommand(execProc,connection);
    scmd.CommandType = CommandType.StoredProcedure;       
 // scmd.Parameters.Add("@name",SqlDbType.VarChar,16);
  //scmd.Parameters.Add("@password",SqlDbType.VarChar,16);
    SqlParameter[] para = new SqlParameter[3];
para[0] = new SqlParameter("@name",SqlDbType.VarChar,16);
para[0].Direction = ParameterDirection.Input;
para[0].Value = userName;
                            //sqlDataA.SelectCommand.Parameters.Add(para[0]);
para[1] = new SqlParameter("@password",SqlDbType.VarChar,16);
para[1].Direction = ParameterDirection.Input;
para[1].Value = password;
//sqlDataA.SelectCommand.Parameters.Add(para[1]);
para[2] = new SqlParameter(
para[2].Direction = ParameterDirection.Output;
para[2].Value = returnNo;
//sqlDataA.SelectCommand.Parameters.Add(para[2]);
//返回存储过程返回值
para[2] = new SqlParameter("@returnNo",SqlDbType.Int,1);
para[2].Direction = ParameterDirection.ReturnValue;
                             para[2].Value = returnNo; return returnNo;

解决方案 »

  1.   

    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlServer"].ToString());
    conn.Open();
    SqlCommand MyCommand = new SqlCommand("MYSQL", conn);
    MyCommand.CommandType = CommandType.StoredProcedure;
    MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
    MyCommand.Parameters["@a"].Value = 20;
    MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
    MyCommand.Parameters["@b"].Direction = ParameterDirection.Output;
    MyCommand.ExecuteNonQuery();
    Response.Write(MyCommand.Parameters["@b"].Value.ToString());
      

  2.   

    para参数数组和你的scmd 有啥联系没。
      

  3.   

    没有加入到Command.Parameters中去。
      

  4.   

    我将sql代码写出来看看。
    create       proc LoginCheckProc
        @name varchar(16),@password varchar(16),@returnNo int output
    as
        begin
           if exists(select 1 from enterpriseUserInfo where enterpUserName = @name and enterpUserPassword= @password)
            begin
             set @returnNo=1
             end
          else if exists (select 1 from personalUserInfo where  userName = @name and userPassword =@password)
            begin
              set @returnNo=2
            end
          else if exists(select 1 from partTimeManInfo where partTimerName=@name and partPassword = @password)
             begin
               set @returnNo =3
            end
          else 
            begin
             set @returnNo=0
           end
       end
      

  5.   

    像下面这样写法有问题不?
    public int checkLoginProc(string userName,string password)
    {
    int returnNo=0;
    SqlDataAdapter sqlDataA = new SqlDataAdapter();
    string execProc = "EXEC LoginCheckProc";
    SqlCommand scmd = new SqlCommand(execProc,connection);
    scmd.CommandType = CommandType.StoredProcedure;       
                scmd.Parameters.Add(new SqlParameter("@name",SqlDbType.VarChar));
    scmd.Parameters["@name"].Value = userName;
    scmd.Parameters.Add(new SqlParameter("@password",SqlDbType.VarChar));
    scmd.Parameters["@password"].Value = password;
    scmd.Parameters.Add(new SqlParameter("@retrunNo",SqlDbType.Int));
    returnNo = Convert.ToInt32(scmd.Parameters["@returnNo"].Value.ToString());
    return returnNo;
    }
      

  6.   

               int returnNo=0;
                SqlDataAdapter sqlDataA = new SqlDataAdapter();
                string execProc = "EXEC LoginCheckProc";
                           SqlCommand scmd = new SqlCommand(execProc,connection);
                scmd.CommandType = CommandType.StoredProcedure;       
             // scmd.Parameters.Add("@name",SqlDbType.VarChar,16);
              //scmd.Parameters.Add("@password",SqlDbType.VarChar,16);
                SqlParameter[] para = new SqlParameter[3];
                para[0] = new SqlParameter("@name",SqlDbType.VarChar,16);
                
                            //返回存储过程返回值
                para[2] = new SqlParameter("@returnNo",SqlDbType.Int,1);
                para[2].Direction = ParameterDirection.ReturnValue;
                                 para[2].Value = returnNo;
                scmd.Parameters.AddRange(para);
                return returnNo;
      

  7.   

    下面代码可以执行了,但是在执行过程中,出现找不到存储过程。
    public int checkLoginProc(string userName,string password)
    {
    int returnNo=0;
    SqlDataAdapter sqlDataA = new SqlDataAdapter();
    string execProc = "EXEC LoginCheckProc";
    SqlCommand scmd = new SqlCommand(execProc,connection);
    scmd.CommandType = CommandType.StoredProcedure;       
                scmd.Parameters.Add(new SqlParameter("@name",SqlDbType.VarChar));
    scmd.Parameters["@name"].Value = userName;
    scmd.Parameters.Add(new SqlParameter("@password",SqlDbType.VarChar));
    scmd.Parameters["@password"].Value = password;
    scmd.Parameters.Add(new SqlParameter("@returnNo",SqlDbType.Int));
    scmd.Parameters["@returnNo"].Direction = ParameterDirection.Output;
    scmd.ExecuteNonQuery();//没有找到存储过程 EXEC LoginCheckProc
    //下面代码有点问题
    returnNo = Convert.ToInt32(scmd.Parameters["@returnNo"].Value.ToString());
    return returnNo;
    }
      

  8.   

    string execProc = "EXEC LoginCheckProc";存储过程名字不对
      

  9.   

    名称是正确的。我直接copy过来的。
      

  10.   

    存储过程名怎么可能有EXEC? 你运行SQL语句吗?
      

  11.   


    你运行SQL语句又写 CommandType.StoredProcedure 作什么?
    你运行存储过程怎么又写SQL命令EXEC . 
    你这不是自相矛盾.