public IList<TempCandidateBo> retrieveTempCandidate(int userid, string tempCanditateName, string currentPosition, string Phone, string mobile, string Email)
        {
                        IList<TempCandidateBo> TempCandidates = new List<TempCandidateBo>();
            String SQL_Temp ="PROG_GET_TempCanditate_Search "; 
            SqlParameter[] parms = {    
                new SqlParameter("@userid", SqlDbType.Int),
                new SqlParameter("@tempCanditateName",SqlDbType.Char,30),
                new SqlParameter("@currentPosition",SqlDbType.Char,100),
                new SqlParameter("@Phone",SqlDbType.Char,100),
                new SqlParameter("@mobile",SqlDbType.Char,100),
                new SqlParameter("@Email",SqlDbType.Char,50),
                };            parms[0].Value = userid;
            parms[1].Value = tempCanditateName.Trim();
            parms[2].Value = currentPosition.Trim();
            parms[3].Value = Phone.Trim();
            parms[4].Value = mobile.Trim();
            parms[5].Value = Email.Trim();
            //Execute a query to read the categories
            using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.connectionString, CommandType.StoredProcedure, SQL_Temp, parms))
            {
                while (rdr.Read())
                {
                    TempCandidateBo tempInfo = new TempCandidateBo();
                    if (!rdr.IsDBNull(0))
                        tempInfo.CandidateID = rdr.GetString(0);
                    if (!rdr.IsDBNull(1))
                        tempInfo.OrderID = rdr.GetString(1);
                    if (!rdr.IsDBNull(2))
                        tempInfo.Name = rdr.GetString(2);
                    if (!rdr.IsDBNull(4))
                        tempInfo.Phone = rdr.GetString(4);
                    if (!rdr.IsDBNull(5))
                        tempInfo.EMail = rdr.GetString(5);
                    if (!rdr.IsDBNull(14))
                        tempInfo.Mobile = rdr.GetString(14);
                    TempCandidates.Add(tempInfo);                }
            }
            return TempCandidates;        }    }

解决方案 »

  1.   

    new   SqlParameter("@Email",SqlDbType.Char,50), mail在存储过程里是100
      

  2.   

     public IList<TempCandidateBo> retrieveTempCandidate(int userid, string tempCanditateName, string currentPosition, string Phone, string mobile, string Email)
            {
                            IList<TempCandidateBo> TempCandidates = new List<TempCandidateBo>();
                String SQL_Temp ="PROG_GET_TempCanditate_Search "; 
                SqlParameter[] parms = {    
                    new SqlParameter("@userid", SqlDbType.Int),
                    new SqlParameter("@tempCanditateName",SqlDbType.Char,30),
                    new SqlParameter("@currentPosition",SqlDbType.Char,100),
                    new SqlParameter("@Phone",SqlDbType.Char,100),
                    new SqlParameter("@mobile",SqlDbType.Char,100),
                    new SqlParameter("@Email",SqlDbType.Char,50),
                    };            parms[0].Value = userid;
                parms[1].Value = tempCanditateName.Trim();
                parms[2].Value = currentPosition.Trim();
                parms[3].Value = Phone.Trim();
                parms[4].Value = mobile.Trim();
                parms[5].Value = Email.Trim();
                //Execute a query to read the categories
                using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.connectionString, CommandType.StoredProcedure, SQL_Temp, parms))
                {
                    while (rdr.Read())
                    {
                        TempCandidateBo tempInfo = new TempCandidateBo();
                        if (!rdr.IsDBNull(0))
                            tempInfo.CandidateID = rdr.GetString(0);
                        if (!rdr.IsDBNull(1))
                            tempInfo.OrderID = rdr.GetString(1);
                        if (!rdr.IsDBNull(2))
                            tempInfo.Name = rdr.GetString(2);
                        if (!rdr.IsDBNull(4))
                            tempInfo.Phone = rdr.GetString(4);
                        if (!rdr.IsDBNull(5))
                            tempInfo.EMail = rdr.GetString(5);
                        if (!rdr.IsDBNull(14))
                            tempInfo.Mobile = rdr.GetString(14);
                        TempCandidates.Add(tempInfo);                }
                }
                return TempCandidates;        }    }
      

  3.   

    我现在就带入一个参数Userid = 1 其他都是空
    单步执行以后的参数是
      parms[0].Value = userid; -----1;
                parms[1].Value = tempCanditateName.Trim(); -------------""
                parms[2].Value = currentPosition.Trim(); --------------""
                parms[3].Value = Phone.Trim();------------------------""
                parms[4].Value = mobile.Trim();-------------------""
                parms[5].Value = Email.Trim();------------------""
    这样的参数结果
      

  4.   

    new   SqlParameter("@Email",SqlDbType.Char,50), 
    改成
    new   SqlParameter("@Email",SqlDbType.Char,100), 
    试试呀
      

  5.   

    还有数据库里定义的是varchar
    new   SqlParameter("@Phone",SqlDbType.Char,100), 
    这里都换成varchar试试
      

  6.   

    char 是以固定长度传递的.就是说你传个"name1" 其实是"name1    "后面跟很多空格
      

  7.   

    是的
    我发现错了
    谢谢rohan大哥
      

  8.   

    你是不是try{}catch(){}了?我估计是C#代码运行的时候有错误了...
    select   @BLLInRole=BLL_Role   from   SYS_BLLInRole   where   BLL_ID='A001' ---候选人消息完全对设置角色组开放
    出来的结果跟后面if else里面的select出来的结果不是在同一个表里面吧?