我过去做过这个,但我不记得处理DBNULLS的正确方法。
这是vb.net
我得到的错误是从“DBNull”类型转换为“Integer”类型无效。
这是代码。
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()
我遇到的问题是数据库中的某些项可能为空。我确信在过去我做过像
这样的事情convert.ToString(reader.item("Something")
但对于我的生活,我无法记住。
答案 0 :(得分:2)
答案 1 :(得分:1)
也许
reader.item("Something").ToString()
你以前做过什么?
这不一定是正确的,但它确实非常有效地处理空字符串。
答案 2 :(得分:1)
也许:
IFF(reader.item("Something") != DBNull.Value, reader.item("Something"), "")
答案 3 :(得分: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
检查是否可以施法。