0

我通常使用SqlDataAdapter類從SQL Server中檢索數據以供.NET應用程序使用。幾乎與往常一樣,在遍歷返回的DataSet時,我經常遇到空對象異常,因爲單元格包含DbBull,這在VB.NET中轉換爲Nothing將非「Nothing」數據從SQL Server返回給.NET應用程序的最佳方法

當然最好將空單元存儲爲NULL而不是空的NVARCHAR或某些此類數據類型。

什麼是最好的做法(假設有一個)將這些DbNulls轉換爲VB.NET中的對象。它通常是一個空字符串,但每種數據類型都有自己的「最合適的」「空」值?

這裏的目標,是我不想填補我的DB垃圾,也不是爲我的應用程序,以打破在遇到DbNull,也不需要做一些愚蠢像這樣...

無法解決的問題!

For Each row As DataRow In dt.Rows 
    Dim cell1 As String = If(IsDBNull(row(0)), "", row(0).ToString) 
    Dim cell2 As String = If(IsDBNull(row(1)), "", row(1).ToString) 
    Dim cell3 As String = If(IsDBNull(row(2)), "", row(2).ToString) 

    Response.Write(String.Format("Cell1: {0}, Cell2: {1}, Cell3: {2}<br />", & _ 
        {cell1, cell2, cell3}) 
Next 

試想一下,如果我有50列,這將是一個重大的麻煩,使用前檢查所有這些。如果存在的話,我想要一個更智能的解決方案。

旁註

在SQL Server它很容易做類似的事情,但並不完全一樣。我通常使用類似isnull(@value,@value)的東西來確保空值被捕獲爲我的數據集的一部分。

+0

嘗試使用[IsNullOrWhiteSpace(http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx)方法 – spajce

+0

@spajce我認爲你誤解了這個問題。爲了使用該方法,需要有一個對象進行評估。我得到'NullReferenceException'這意味着沒有對象。 – Chiramisu

+0

有時候Null可能是一個令人討厭的麻煩,但ToString()應該爲空值返回一個空字符串。當我使用VS2008進行測試時,它確實如此。我在VB6中使用的一個很酷的技巧是簡單地將值與空字符串連接起來,例如, '「」&Row(0)' –

回答

0

試試這個:

Dim sValue as String = "" 
sValue = If(cmdComanda.ExecuteScalar(), String.Empty) 
相關問題