【问题标题】:why is oledb dataadapter not fetching any data from access database in vb.net?为什么 oledb dataadapter 没有从 vb.net 中的 access 数据库中获取任何数据?
【发布时间】:2013-04-02 19:59:13
【问题描述】:

我遇到了一个非常特殊的问题。我正在使用 ms access 2007 使用 asp .net vb

为了获取数据,我使用以下代码 sn-p

        connection = utility.GetConnection()
        Dim command As New OleDbCommand(sQuery, connection)
        Dim adapter As New OleDbDataAdapter(sQuery, connection)
        Dim dt As New DataTable()
        adapter.SelectCommand = command
        adapter.Fill(dt)

当我使用不带 where 子句的查询时,它可以工作。即 IT 获取所有行并填充数据表。但是当 sQuery 带有 where 子句时,dt.Rows.Count 总是给出 0。即没有从数据库中获取数据。我说这是一个更特殊的问题,因为在调试时我复制了带有 where 子句的 sQuery 并在 ms 访问中运行,它正在返回数据。我不明白我错过了什么。 我正在显示为 sQuery 生成的查询

    SELECT * FROM ORDER_VIEW WHERE 1 = 1 (I don have any problem with that)

但是当sQuery有

  SELECT * FROM ORDER_VIEW WHERE 1 = 1 AND ITEM_ID_NO LIKE '011*' 

它在 ms 访问中获取行但是,adapter.Fill(dt) 行不会用任何行填充数据表

我被这个问题困住了,任何建议和解决方案在此先感谢。

【问题讨论】:

  • 尝试改用'011%'
  • 成功了!现在它提出了另一个问题,通配符在 asp .net 和 ms 访问中是否不同?因为现在我在 ms 访问中尝试了这个查询并且它没有返回任何数据。

标签: asp.net vb.net ms-access-2007 oledbdataadapter


【解决方案1】:

使用 OleDB 提供程序时,请尝试使用 '011%' 而不是 '011*'

我相信 OleDB 引擎使用 % 作为通配符,而 Access 引擎使用 * 字符。这取决于提供者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 2019-10-12
    • 1970-01-01
    • 2015-05-13
    • 2023-04-04
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    相关资源
    最近更新 更多