私は通常、このSqlDataAdapter
クラスを使用して SQL Server からデータを取得し、.NET アプリケーションで使用します。ほとんどの場合、返されたオブジェクトをトラバースしているときに、セルに VB.NETに変換されるDataSet
a が含まれているため、null オブジェクト例外が発生することがよくあります。DbBull
Nothing
当然、空のセルやそのようなデータ型を格納NULL
するよりも、空のセルを格納する方が適切です。NVARCHAR
これらの DbNull を 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)
ヌルがデータセットの一部としてキャプチャされるようにするために、次のようなものを使用します。