2012-08-06 115 views
4

我有以下ASP.NET(VB)代碼:ASP.NET VB - 從型 '的DBNull' 轉換到類型 '字符串' 無效

strLocation = CStr(q1("LocationName")) + " " + CStr(q1("LocationAddress")) + " " + CStr(q1("LocationCity")) 

作爲LocationCity爲空:

我從類型'DBNull'轉換爲類型'String'無效。

有沒有辦法解決這個問題。

如果這只是LocationCity我可能會做這樣的事情:

If IsDBNull(q1("LocationCity")) Then 
     strLocation = "" 
    Else 
     strLocation = CStr(q1("LocationCity")) 
    End If 

我也試過:

strLocation = If(CStr(q1("LocationName")), "") + " " + If(CStr(q1("LocationAddress")), "") + " " + If(CStr(q1("LocationCity")), "") 

,但得到了同樣的結果

在C#中我通常會使用? ?但不知道在ASP.NET VB

+0

發生了什麼?你是否在你的if語句中使用另一個語句並拋出了一個execption?調試器告訴你什麼?如果你檢查是否真的是dbnull?你使用哪個數據庫和提供者? – 2012-08-06 15:16:43

回答

2

最好的方法,你可以使用If(IsDBNull(q1("propertyName")), "", CStr(q1("propertyName")))

或者你可以執行的代碼塊,你表現爲一個方法,並呼籲每個屬性,方法。海事組織,它將使你的代碼行比使用3個IIF語句

Function StringValue(q1 as Q1Type) as String 
    If IsDBNull(q1("LocationCity")) Then 
     Return "" 
    Else 
     Return CStr(q1("LocationCity")) 
    End If 
End Function 

strLocation = StringValue(q1("LocationName")) + " " + StringValue(q1("LocationAddress")) + " " + StringValue(q1("LocationCity")) 
+0

'IIF'執行「true」和「false」參數,因此你答案的那部分不起作用 – freefaller 2012-08-06 15:25:22

相關問題