首页 > 解决方案 > 为数据表分配 TVP 值

问题描述

在承受很大压力后,我遇到了一个问题,缩小到将字符串分配给数据表(单元格?)

Dim dc As New DataColumn("Col1")
dc.DataType = System.Type.GetType("System.String")
ParameterTable.Columns.Add(dc)

For i = 0 To whereInValues.Count - 1
                r = ParameterTable.NewRow
                r.Item("Col1") = whereInValues(i).ToString
                ParameterTable.Rows.Add(r)

Next

这是相关代码的一小段。这是一个遍历 whereInValues List(Of String) 的循环,其中包含 SQL 语句的 IN() 值的字符串。

ParameterTable 是我的数据表

这分配给参数的 .value 属性,该属性设置为结构化。

基本上,当我使用 List 的 .ToString 方法设置数据表的值时,它在调试器中显示良好,但不会从数据库返回任何结果。当我直接设置值时:

r.Item(column) = "Barratt Homes"

它返回正确的结果。我尝试在表达式周围包裹一个 CStr() ,但没有效果。

以这种方式分配数据表值有什么区别?.ToString 是否与 System.String 相同?

标签: sqlvb.net

解决方案


对不起,我找到了我的问题的答案。

我的代码自动用 ' 字符包装 List(Of String) 的字符串。使用参数时,您显然不需要它,因为它构成您正在搜索的字符串的一部分。因此,当我手动分配字符串时,那里没有这些字符。

愚蠢的错误...


推荐阅读