我正在使用vb.net 2013和数据库sql server express。当我尝试向列表视图显示数据库时,出现这样的错误
Microsoft.VisualBasic.dll中发生了类型为'System.Reflection.AmbiguousMatchException'的未处理异常 附加信息:重载解析失败,因为无法使用以下参数调用公共“添加”: '公共功能添加(项目作为System.Windows.Forms.ListViewItem.ListViewSubItem)作为System.Windows.Forms.ListViewItem.ListViewSubItem': 参数匹配的参数“ item”不能从“ DBNull”转换为“ ListViewSubItem”。 '公共功能添加(文本为字符串)为System.Windows.Forms.ListViewItem.ListViewSubItem': 匹配参数'text'的参数不能从'DBNull'转换为'String'。
我的代码是这样的:
Sub ListViewForMasterBiaya()
Call DatabaseConnection()
Dim DT As New DataTable
Dim DS As New DataSet
CMD = New SqlCommand("SELECT * FROM EntriBiaya", CONN)
DA = New SqlDataAdapter(CMD)
DS.Clear()
DA.Fill(DS, "EntriBiaya")
DT = DS.Tables(0)
ListViewMasterBiaya.Items.Clear()
For i As Integer = 0 To DT.Rows.Count - 1
With ListViewMasterBiaya
.Items.Add(DT.Rows(i)("NoKode"))
With .Items(.Items.Count - 1).SubItems
.Add(DT.Rows(i)("JenisBiaya"))
.Add(DT.Rows(i)("NoPol"))
.Add(DT.Rows(i)("Debit"))
.Add(DT.Rows(i)("Kredit"))
.Add(DT.Rows(i)("Tabungan"))
.Add(DT.Rows(i)("Angsuran"))
.Add(DT.Rows(i)("Klaim"))
.Add(DT.Rows(i)("TotalDiterima"))
End With
End With
Next
End Sub
该错误显示在第19行。出了点问题吗?请帮助
答案 0 :(得分:2)
一个具体的问题是,虽然您的某些字段确实包含String
并且上述转换/转换可以隐式完成,但至少一个字段为NULL,因此包含DBNull.Value
,即而不是String
方法所期望的Add
或其他任何类型,这就是错误消息告诉您的内容。如果您希望在字段为NULL时将String
传递给Add
,则需要创建一个。
最简单的选择是简单地调用从ToString
获得的Object
参考上的DataRow
。这将处理已经是String
的数据,其他类型的数据和NULL,因为DBNull.ToString()
返回String.Empty
,例如
.Add(DT.Rows(i)("TotalDiterima").ToString())