2013-05-20 98 views
1

我想測試NULL值的SQL輸出參數。我意識到SQLString.NULL不等於DBNull.Value。我的問題是,是否有一個更一般的檢查參數爲空值的方法?VB.NET處理SQL空值和SqlString.Null

理想情況下,我不想根據它們的SQL類型檢查每個參數,例如,整數參數SqlTypes.SqlInt32.Null。

這裏是我的代碼片段:

.ExecuteStoredProcedure("spGetClientDetails") 

If CInt(.Parameters("@return_val").Value) = 0 Then 

If myParams(1).SqlValue.Equals(SqlTypes.SqlString.Null) Or myParams(1).SqlValue.Equals(System.DBNull.Value) Then 
    Claimants = "" 
Else... 

回答

2

如果使用Value,而不是SqlValue,你會得到定期的.NET類型,而不是一個SqlType。當數據庫返回NULL時,Value將設置爲DBNull.Value

檢查DBNull.Value一個簡明的方法是TryCast

Dim Claimants As String = TryCast(myParams(1).Value, String) 

這將設置ClaimantsNothing如果myParams(1)不是字符串。要設置Claimants爲空字符串,而不是,您可以添加If

Dim Claimants As String = If(TryCast(myParams(1).Value, String), "") 
+0

謝謝,使用值,而不是SQLValue工作確定。 – StevenC