C#调用存储过程参数问题以及参数值从Sqlparameter转换到String失败的原因。

第一幅图片是出错的提示信息,第二幅图显示出错的位置,第三幅是调用的存储过程,我想问得是,我调用存储过程的方式是否有错,因为我用过一种很笨的方法,就是用Sql语句实现(SQ... 第一幅图片是出错的提示信息,第二幅图显示出错的位置,第三幅是调用的存储过程,我想问得是,我调用存储过程的方式是否有错,因为我用过一种很笨的方法,就是用Sql语句实现(SQL语句特别长,所以想到用存储过程),程序没有报错,而把原来的语句放在存储过程中,并在声明存储过程的时候设置了输入参数,结果程序就出现第一步的错误,上面的没有贴出来的方法内也设置了sql语句的类型为存储过程,输入参数就是@name和@department,还有就是,当sql语句是Text类型的时候,我用的方法是另外一个方法,所以不要说我方法用错了。我用的是三层架构,这些都是DAL层的程序。按照提示,我觉得是数据转换的原因,但不知怎么改。 展开
 我来答
爱神遗梦录af
2013-05-13 · 超过12用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:30.2万
展开全部
还是数据调用的问题,就是数据类型不匹配,仔细看一下吧,中间有没有数值转换的操作.不一定就是出错的位置的问题.设一个断点,一步一步调,检查每一步变量值的变化,仔细观察每一步出现的提示和你预想是否一样.
夏天听雨ing
2013-05-13 · 超过16用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:47万
展开全部
在sqlserver中执行你的存储过程,看看是不是有问题
如果没有问题,那就检查传入的参数是不是null,如果是的转化成“”
应该是这两个地方有问题
追问

这是我调试的结果,我传的值怎么是这个啊?

追答
给SqlParameter赋值有问题
最好传入List类型的
List paras = new List
{
new SqlParameter{ParameterName="name",Value=name},
new SqlParameter{ParameterName="department",Value=department}
};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cfe4d0f
2013-05-13 · TA获得超过1502个赞
知道小有建树答主
回答量:937
采纳率:100%
帮助的人:866万
展开全部
程序看不出问题
问题出在你的prepareCommand里。。
可以粘贴出那个函数的代码吗0 0
追问

第一个图是我改了后的调试的结果。(我把上面的强制转换成了string类型,但datagridView中显示不出我的数据。)

追答
其实是你传入参数类型不对称的问题
问题出现在最后一张截图的最后一句话上
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])
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式