【发布时间】:2016-02-08 14:03:11
【问题描述】:
我有以下代码,作为我的程序的一部分可以正常工作:
.CommandText = .CommandText & " and [Name] = ?"
然后我使用以下方法添加参数:
.Parameters.Append(SearchCom.CreateParameter("@Name", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 100, Name.Text))
这很好用,但我真的想搜索包含 Name.Text 中的值的所有内容。我搜索了几十篇说可以执行以下操作的文章,但即使有明确的数据匹配,它也总是返回 0 个结果:
.CommandText = .CommandText & " and [Name] like '%' + ? + '%'"
.Parameters.Append(SearchCom.CreateParameter("@Name", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 100, Name.Text))
我现在尝试了下面的建议,但记录集仍然返回 0 个结果:
.CommandText = .CommandText & " and [Name] like ?"
.Parameters.Append(SearchCom.CreateParameter("@Name", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 100, "%" + Name.Text + "%"))
我正在使用 Microsoft Visual Studio 2015,使用 ADODB 在 vb.net 中编写以连接到 SQL Server 2014 实例。
CodingGorilla 建议的 SQL 跟踪揭示了以下 SQL 在运行时运行。我不知道为什么它不起作用!
exec sp_executesql N'SELECT * FROM qFormsAndName Where [FormType] Like ''R1%'' and [Name] like @P1 ORDER BY [CurrentStatus], [DateReceived];',N'@P1 char(100)','%JONES%
有人可以帮忙吗?
【问题讨论】:
-
好的,我已经为任何偶然发现这个问题的人解决了这个问题。您会看到,在我的 .parameters.append 中,我将“默认”文本长度设置为 100。这适用于“= Param”查询(出于某种原因),但不适用于 Like 查询,因为该参数在文本。 Like % P1 % 其中 P1 是一个参数,它跟踪为 Like "%JONES %"
标签: sql vb.net parameters ado