0

私は過去にこれを行ったことがありますが、DBNULLSを処理する正しい方法を思い出せません。

これはvb.netです

取得中のエラーは、タイプ「DBNull」からタイプ「整数」への変換が無効です。

これがコードです。

Dim reader As MySqlDataReader = command.ExecuteReader
Do While reader.Read
Dim item As New clsProvider(reader.Item("MasterAccountID"), reader.Item("CompanyName"), reader.Item("Address"), reader.Item("Postcode"), reader.Item("Telephone"), reader.Item("Fax"), reader.Item("Number_of_Companies"), reader.Item("Total_Number_of_employees"), reader.Item("MainContactName"), reader.Item("MainContactPhone"), reader.Item("MainContactEmail"), reader.Item("Fee"), Convert.ToString(reader.Item("Notes")))
            list.Add(item)
Loop
reader.Close()

私が抱えている問題は、一部のアイテムがDBで空になっている可能性があることです。私は過去に次のようなことをしたと確信しています

convert.ToString(reader.item("Something") 

しかし、私の人生のために私は思い出せません。

4

4 に答える 4

2

列がNULL可能である場合は、NULLをチェックする必要があります。

If (reader.IsDBNull(ordinal))

IsDBNullを参照してください

于 2012-09-01T21:24:32.387 に答える
1

多分

 reader.item("Something").ToString()

あなたが以前にしたことは何ですか?

これは必ずしも正しいとは限りませんが、null文字列を非常に効果的に処理します。

于 2012-09-01T21:18:27.663 に答える
1

多分:

IFF(reader.item("Something") != DBNull.Value, reader.item("Something"), "")
于 2012-09-01T21:23:08.453 に答える
0

最初に、列の値がnullかどうかを確認する必要があります(DBNullの着信値を確認してください)。次に何をすべきかを決定できることがわかったら、変数にnullまたはその他のデフォルト値を割り当てます。

私のVB.Netがまだ基準に達しているかどうかはわかりませんが、次のようなものが役立つはずです。

Dim item As New clsProvider
item.AccountId = TryCast(reader.Item("MasterAccountID"), String)
item.SomeInt= If(TryCast(reader.Item("SomeInt"), System.Nullable(Of Integer)), 0)

TryCastキャストが可能かどうかを確認するために使用します。

于 2012-09-01T21:23:50.797 に答える