C#调用存储过程参数问题以及参数值从Sqlparameter转换到String失败的原因。
第一幅图片是出错的提示信息,第二幅图显示出错的位置,第三幅是调用的存储过程,我想问得是,我调用存储过程的方式是否有错,因为我用过一种很笨的方法,就是用Sql语句实现(SQ...
第一幅图片是出错的提示信息,第二幅图显示出错的位置,第三幅是调用的存储过程,我想问得是,我调用存储过程的方式是否有错,因为我用过一种很笨的方法,就是用Sql语句实现(SQL语句特别长,所以想到用存储过程),程序没有报错,而把原来的语句放在存储过程中,并在声明存储过程的时候设置了输入参数,结果程序就出现第一步的错误,上面的没有贴出来的方法内也设置了sql语句的类型为存储过程,输入参数就是@name和@department,还有就是,当sql语句是Text类型的时候,我用的方法是另外一个方法,所以不要说我方法用错了。我用的是三层架构,这些都是DAL层的程序。按照提示,我觉得是数据转换的原因,但不知怎么改。
展开
3个回答
展开全部
在sqlserver中执行你的存储过程,看看是不是有问题
如果没有问题,那就检查传入的参数是不是null,如果是的转化成“”
应该是这两个地方有问题
如果没有问题,那就检查传入的参数是不是null,如果是的转化成“”
应该是这两个地方有问题
追答
给SqlParameter赋值有问题
最好传入List类型的
List paras = new List
{
new SqlParameter{ParameterName="name",Value=name},
new SqlParameter{ParameterName="department",Value=department}
};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序看不出问题
问题出在你的prepareCommand里。。
可以粘贴出那个函数的代码吗0 0
问题出在你的prepareCommand里。。
可以粘贴出那个函数的代码吗0 0
追答
其实是你传入参数类型不对称的问题
问题出现在最后一张截图的最后一句话上
cmd.Parameters[i].Value = parameterValues[i]
你可以试试如下方案。
prepareCommand函数的parameter参数 直接传入string数组 而不是sqlparam数组
也就是getSalary函数中的sqlparameter[] para 应该如下声明:
string[] para = {name, department };
后面直接对应
或者
prepareCommand函数不要执行deriveParameters 直接使用parameter参数传进来的param
后面直接cmd.params.add(param[0])
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询