问题解决:SqlParameterCollection只接受非空的SqlParameter类型对象,不接受SqlParameter[]对象

 

做.net个人版机房收费系统时,遇到了这样一个问题:

 

既然提到了SqlParameter,那就意味着设置参数处出现了问题,但是到底是哪里出了问题呢,之前运行的时候也没有出错呀,怎么现在又出现了这样的错误。仔细研究提示的错误:只接受非空的SqlParameter类型对象。也就是说我给函数传入的参数为空呗,但是自己的代码里明明传入了参数,怎么会提示传入的为空呢??那一定是没有传入成功;虽然调用的函数参数已对应“传入”,但是没有识别。

网上查了这个问题,但都不符合我的错误,但是可以看出他们错误的共同点,就是我上面所说的SqlParameter类型参数传入不成功。

最后发现了我的问题所在:以下是我的代码

SqlHelper中的一个函数:

 

D层的函数SelectUser_DA()调用以上SqlHelper中的函数Executescalar():

问题出在SelectUser_DA(ByVal enUser As UserEntity)在调用 Executescalar(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paramete As SqlParameter())时,第三个参数没有传入,虽然在代码上看似传入了参数,但是在Executescalar()函数中并没有读入,问题在于我第一次写的添加参数的代码:cmd.Parameters.Add(paramete),之后改为 cmd.Parameters.AddRange(paramete),就正确了。

 

Why?

两个属性Add和AddRange的区别在哪里?

cmd.Parameters.Add():添加一个参数。增加多个参数时,需要使用一个Foreach循环;

cmd.Parameters.AddRange():添加一个参数的数组;

所以很明显了,我添加的是一个参数数组,所以用cmd.Parameters.Add()就出现错误了。

 

问题总结:细节决定成败,有时候学习还真的不能差不多,有时候研究很久,就差那么一点。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值