首先在sqlserver管理工具里可以正确执行存储过程,说明存储过程是没有问题的。
我想有可能是因为字符串编码问题吧,如果在字符串前面加上大写的N的话,应该可以解决,问题是怎么在 SqlParameter里的数据加上这个大写的N,或者说怎么让sqlparameter传递的值为Unicode编码

解决方案 »

  1.   

    playzxw(淡淡) 
    有什么好的解决办法没有?
      

  2.   

    C#默认的就是unicode编码的,我看不是编码的问题。
      

  3.   

    传进去之前,你指定的类型可能有问题,以前遇到过此类问题,比如是字符型,你指了整型上面是一个方面,我遇到过类似问题,出在类型上还有就是你传进参数后会不会引起SQL超长
      

  4.   

    //类似下面 申明SqlParameter 在申明参数时 申明类型为nvarcharSqlParameter[] paras = new SqlParameter[11]; paras[0] = new SqlParameter("@tblName",SqlDbType.NVarChar,4000);
    paras[0].Direction = ParameterDirection.Input;
    paras[0].Value = tbName;
    paras[1] = new SqlParameter("@fldName",SqlDbType.NVarChar,600);
    paras[1].Direction = ParameterDirection.Input;
    paras[1].Value = fieldsName;
    paras[2] = new SqlParameter("@pageSize",SqlDbType.Int);
    paras[2].Direction = ParameterDirection.Input;
    paras[2].Value = pageSize;
    paras[3] = new SqlParameter("@page",SqlDbType.Int);
    paras[3].Direction = ParameterDirection.Input;
    paras[3].Value = nowPageNo;
    paras[4] = new SqlParameter("@fldSort",SqlDbType.NVarChar,200);
    paras[4].Direction = ParameterDirection.Input;
    paras[4].Value = sortField;
    paras[5] = new SqlParameter("@Sort",SqlDbType.Bit);
    paras[5].Direction = ParameterDirection.Input;
    paras[5].Value = isDesc;
    paras[6] = new SqlParameter("@strCondition",SqlDbType.NVarChar,1000);
    paras[6].Direction = ParameterDirection.Input;
    paras[6].Value = searchCondition;
    paras[7] = new SqlParameter("@ID",SqlDbType.NVarChar,150);
    paras[7].Direction = ParameterDirection.Input;
    paras[7].Value = id;
    paras[8] = new SqlParameter("@Dist",SqlDbType.Bit);
    paras[8].Direction = ParameterDirection.Input;
    paras[8].Value = isDist;
    paras[9] = new SqlParameter("@pageCount",SqlDbType.Int);
    paras[9].Direction = ParameterDirection.Output;
    paras[10] = new SqlParameter("@Counts",SqlDbType.Int);
    paras[10].Direction = ParameterDirection.Output; return paras;