我遇到了一个非常奇怪的问题。我在使用ms access 2007的asp .net vb工作
为了获取数据,我使用以下代码片段
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生成的queires
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)行不会用任何行填充数据
我对这个问题感到困惑,提前感谢任何建议和解决方案。
答案 0 :(得分:3)
使用OleDB提供程序时,请尝试使用'011%'
代替'011*'
。
我相信OleDB引擎使用%
作为外卡引擎使用*
字符的外卡字符。它归结为提供者。