vb.net - 有没有办法根据 vb.net 中的 datagridview 选定值运行 for 循环查询?
问题描述
由于以下错误,无法获得异常结果
从字符串 " 到类型 'integer' 的转换无效'
我已经能够从产品表中加载值,将选定的值添加到选定的产品中,然后根据客户表搜索所有选定的产品,以了解有多少客户订购了这些产品。
Try
Dim ListOfDiag As StringBuilder = New StringBuilder()
For Each row As DataGridViewRow In SelectedDiagDGV.Rows
ListOfDiag.Append(row.Cells(0).Value.ToString & "", "" & Environment.NewLine)
Next
Dim query As String = String.Empty
Dim SegmentConnectionString As String = "Data Source=Test-PC;Initial Catalog=TestDB;Integrated Security=True"
query = "SELECT Customers, ProductName from Customers WHERE ProductName in (" & ListOfDiag.ToString & ")"
Dim dTable As DataTable = New DataTable()
Dim dAdapter As SqlDataAdapter
dAdapter = New SqlDataAdapter(query, SegmentConnectionString)
dAdapter.Fill(dTable)
DataGridView1.DataSource = dTable
'Next
Catch ex As System. Exception
MsgBox(ex.Message.ToString)
End Try
无法执行 for 循环搜索。一些值包含特殊字符,例如:Soft 'Drink';电脑桌)。
错误:从字符串 " 到类型 'Integer' 的转换无效。
解决方案
ListOfDiag.Append(row.Cells(0).Value.ToString & "", "" & Environment.NewLine)
没有作为参数StringBuilder.Append
的重载。(String, String)
第一个字符串是row.Cells(0).Value.ToString & ""
,然后在参数之间有一个逗号,第二个字符串是"" & Environment.NewLine
记住“”是一个空字符串,而不是转义字符。不确定您的意图是什么,但这行不通。
你有正确的方法;为该In
子句构建一个字符串。我使用 aList(Of String)
从行中获取数据,然后在循环之后我使用.Join
带有逗号分隔符的 a 来获取In
子句的值。
我将连接字符串直接传递给 Connection 的构造函数,并将 Select 语句和连接传递给 Command 的构造函数。对于我使用的 Select 语句和 Interpolated String(以 $ 开头的字符串)您还可以在旧版本的 Visual Studio 中使用 String.Format。
Using...End Using
即使出现错误,这些块也可确保您的数据库对象已关闭和处置。
我认为唯一可能搞砸的特殊字符是产品名称中存在逗号。
Private Sub OPCode()
Dim dTable As New DataTable
Dim ListOfDiag As New List(Of String)
For Each row As DataGridViewRow In SelectedDiagDGV.Rows
ListOfDiag.Add(row.Cells(0).Value.ToString)
Next
Dim InData = String.Join(",", ListOfDiag)
Using cn As New SqlConnection("Data Source=Test-PC;Initial Catalog=TestDB;Integrated Security=True")
Using cmd As New SqlCommand($"SELECT Customers, ProductName from Customers WHERE ProductName in ({InData})", cn)
cn.Open()
dTable.Load(cmd.ExecuteReader)
End Using
End Using
DataGridView1.DataSource = dTable
End Sub
推荐阅读
- python - Keras 转换 和未转化。区别
- java - Java - ByteArrayOutputStream 替换,但仅适用于 1 个值
- javascript - 如何测试更改文件内容的功能(Jest)
- r - 如何从 R 中的数据框中提取每个条目名称的中点位置?
- java - 使用 pdfbox 替换 pdf 中的字符串时获取 /u0000
- python - 如何在python中按顺序对列表进行排序?
- python - 制作数据集以在 Sklearn 中测试 PCA?
- java - Android Studio 我无法在课堂上获得回报。(火库)
- r - 通过预定义的协方差矩阵计算逐行马氏距离
- python - 如何保留自动添加的 argparse 帮助参数,但从中删除 -h 以便我可以将该选项用于另一个参数