代码之家  ›  专栏  ›  技术社区  ›  Dayton Brown

带有参数的TableAdapter Fillby查询不适用于Like运算符

  •  0
  • Dayton Brown  · 技术社区  · 15 年前

    把我的头撞在墙上。我有一个像这样的问题。

    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 = ?
    

    一切都很好。不过,我需要像工作一样工作,这样我可以进行通配符搜索。

    如果这意味着什么的话,我正在使用SQL Server OLE DB连接。

    更新

    使用like运算符根本不起作用。当我只是换了喜欢。什么都不退还。

    4 回复  |  直到 15 年前
        1
  •  2
  •   MartW    15 年前

    您需要将查询转换为:

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

    如果您在参数本身中传递%的话,我认为它将把它解释为一个字符串值,而不是一个通配符,并且只和firstname='joe%一样工作。

        2
  •  2
  •   Matthias    12 年前

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

    我把SQL改为 LIKE LTRIM(RTRIM(@string))

    然后我把 % 在我发送的字符串中。表适配器正在发送参数中的完整字符串,包括空格,即使输入已被剪裁。这意味着查询将永远找不到数据,因为存在空格

        4
  •  0
  •   il_guru 0xAX    11 年前

    所以结果是OLEDB连接中的某个东西被连接上了。当我创建了一个新的连接和一个新的表适配器时,一切都开始正常工作。

    编辑

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

    分贝