日期:2014-05-19  浏览次数:21021 次

在SqlServer2005管理工具里手动传值可以正确执行存储过程,如果使用sqlcommand执行的时候没有报错,但就是不出结果,问题解决立刻给分
首先在sqlserver管理工具里可以正确执行存储过程,说明存储过程是没有问题的。
我想有可能是因为字符串编码问题吧,如果在字符串前面加上大写的N的话,应该可以解决,问题是怎么在   SqlParameter里的数据加上这个大写的N,或者说怎么让sqlparameter传递的值为Unicode编码


------解决方案--------------------
C#默认的就是unicode编码的,我看不是编码的问题。
------解决方案--------------------
传进去之前,你指定的类型可能有问题,以前遇到过此类问题,比如是字符型,你指了整型

上面是一个方面,我遇到过类似问题,出在类型上

还有就是你传进参数后会不会引起SQL超长
------解决方案--------------------
//类似下面 申明SqlParameter 在申明参数时 申明类型为nvarchar

SqlParameter[] 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;