sql-server - 在 VB.Net 上将数据库表数据显示到列表视图时出错
问题描述
我正在使用 vb.net 2013 和数据库 sql server express。当我尝试将数据库显示到列表视图时,出现这样的错误
Microsoft.VisualBasic.dll 中出现“System.Reflection.AmbiguousMatchException”类型的未处理异常附加信息:重载解析失败,因为无法使用以下参数调用公共“添加”:“公共函数添加(项目为 System.Windows.Forms .ListViewItem.ListViewSubItem) As System.Windows.Forms.ListViewItem.ListViewSubItem':参数匹配参数 'item' 无法从 'DBNull' 转换为 'ListViewSubItem'。“公共函数添加(文本作为字符串)作为 System.Windows.Forms.ListViewItem.ListViewSubItem”:参数匹配参数“文本”无法从“DBNull”转换为“字符串”。
我的代码是这样的:
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 行。有什么问题吗?请帮忙
解决方案
具体问题是,虽然您的某些字段确实包含 aString
并且上述转换/转换可以隐式完成,但至少有一个字段为 NULL 并因此包含DBNull.Value
,这不是该方法所期望的 aString
或任何其他类型,这Add
是错误消息告诉您的内容。如果您希望在字段为 NULL 时传递一个String
to Add
,那么您需要创建一个。
最简单的选择是简单地ToString
调用Object
从DataRow
. 这将处理已经是 aString
的数据,其他类型的数据和 NULL,因为DBNull.ToString()
返回String.Empty
,例如
.Add(DT.Rows(i)("TotalDiterima").ToString())
推荐阅读
- google-apps-script - 如何在写入“进度”的同一单元格中写入。它必须只写在满足条件的单元格上?有人可以帮助我吗?
- html - 如何在行的中心添加水平线我想在 vue.js 中添加一些内容?
- reactjs - React Hook useEffect 缺少依赖项:xxx。要么包含它们,要么删除依赖数组 react-hooks/exhaustive-deps
- python - 尽管代码似乎很好,为什么 pyautogui 无法找到我的图像?
- laravel - Laravel URL 开头带有可选参数
- macos - 电子生成器中的 mac-screen-capture-permissions 构建失败
- json - 如何在 Swift 中将 JSON 响应添加到当前日期的时间
- python - 将字符打印为其转义版本而不是代码
- javascript - 需要使用 java 脚本连同日期将以下字符串转换为 JSON 对象
- c++ - C++ EnumWindows 有时不返回窗口标题