问题解决: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()就出現錯誤了。
?
問題總結:細節決定成敗,有時候學習還真的不能差不多,有時候研究很久,就差那么一點。
總結
以上是生活随笔為你收集整理的问题解决:SqlParameterCollection只接受非空的SqlParameter类型对象,不接受SqlParameter[]对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AJAX 缓存问题的两种解决方法(IE
- 下一篇: 处理问题:变量名‘@UserName’已