带参数的TableAdapter FillBy查询不适用于LIKE运算符

时间:2010-01-19 19:10:15

标签: vb.net

我的头靠在墙上。我的查询看起来像这样。

SELECT FirstName, LastName, Address
FROM Members
WHERE FirstName LIKE 'JOE%'

在查询向导和DataTablePreview数据窗口中完全正常。但是,当我这样做时。

SELECT FirstName, LastName, Address
FROM Members
WHERE FirstName LIKE ?

当我运行fillby方法时,我什么都没得到。如果我将LIKE更改为=。

SELECT FirstName, LastName, Address
FROM Members
WHERE FirstName = ?

一切都很好。我需要让LIKE工作,所以我可以通配符搜索。

我正在使用SQL服务器OLE数据库连接,如果这意味着什么。

更新

使用LIKE运算符根本不起作用。当我换掉=为LIKE。没有任何回报。

4 个答案:

答案 0 :(得分:2)

您需要将查询转换为:

WHERE FirstName LIKE '%' + ? + '%'

如果在参数本身中传递%,我认为它会将其解释为字符串值而不是通配符,并且与FirstName ='JOE%'的工作方式相同

答案 1 :(得分:2)

我有这个问题。该查询在查询构建器中工作,然后在表适配器中预览时失败。

我将SQL更改为LIKE LTRIM(RTRIM(@string))

然后我将%放入我发送的字符串中。表适配器在参数中发送完整的字符串,包括空格,即使输入被修剪。这意味着由于空格

,查询永远不会找到数据

答案 2 :(得分:0)

答案 3 :(得分:0)

事实证明,OLEDB连接中的某些东西已被清除。当我创建一个新连接和一个新的表适配器时,一切都开始正常工作。

修改

我实际做的是使用SQL服务器适配器而不是SQL服务器OLEDB适配器。

DB