费哥的博客

心若在,梦就在
随笔 - 52, 文章 - 0, 评论 - 39, 引用 - 0
数据加载中……

ADO.NET更新ACCESS碰到的怪异问题

开发环境:VS2005+ACCESS2007
驱动:Provider=Microsoft.Jet.OLEDB.4.0
使用ADO.NET更新ACCESS时碰到一个怪异问题,不知道是ADO.NET还是ACCESS或是连接字符串驱动程序的BUG.

例如使用模糊查询使用SELECT * From tablename WHERE fieldname LIKE '%aaa' 查询不到任何记录,但是使用
SELECT * From tablename WHERE fieldname LIKE '*aaa' 能够查询到所有记录.

当使用UPDATE tablename SET filedname='bbb' WHERE fieldname LIKE '*aaa' 做为CommandText的时候,调用
ExecuteNonQuery()执行更新操作的时候返回的行数竟然为0,数据库也没有任何的更新.但是直接在ACCESS的SQL视图中执行却提示能够更新.
而使用UPDATE tablename SET filedname='bbb' WHERE fieldname LIKE '%aaa' 做为CommandText的时候,调用
ExecuteNonQuery()执行更新操作的时候确可以更新成功,返回更新执行的行数.但是直接在ACCESS的SQL视图中执行却返回行数为0,不能正确执行更新.

虽然ACCESS的帮助中如是说:

请务必注意,ANSI SQL 中的通配符 (%) 和 (_) 只能在 Microsoft Access 数据库引擎和 Microsoft Office Access 2007 OLE DB Provider 中使用。如果通过 Microsoft Office Access 2007 或 DAO 使用,它们将被视为文字。

百思不得其解.望大家指教.

Tag标签: ADO.NET,ACCESS

posted on 2008-04-25 22:11 费哥 阅读(593) 评论(7)  编辑 收藏 网摘 所属分类: 数据库.net

评论

#1楼   回复  引用  查看    

SELECT * From tablename WHERE fieldname LIKE '%aaa'
不是这样写的吧
SELECT * From tablename WHERE fieldname LIKE '%aaa%'

2008-04-25 22:29 | 把大海藏到心里      

#2楼[楼主]   回复  引用  查看    

@把大海藏到心里
%是通配符,'%aaa' 代表后面是aaa,你说的'%aaa%' 代表字符串中包含aaa
2008-04-25 22:34 | 费哥      

#3楼   回复  引用    

Access不是这样写的,查一下帮助,我原来好像也遇到过,和T-SQL有区别
2008-04-26 01:55 | evanescence_x[未注册用户]

#4楼[楼主]   回复  引用  查看    

麻烦看我的文章仔细点.有兴趣的自己可以试试
2008-04-26 19:25 | 费哥      

#5楼   回复  引用  查看    

提问的话,可以到博问哦,首页不太适合。

从“Provider=Microsoft.Jet.OLEDB.4.0”看来,这个oledb provider是旧版的。

据说2007的连接字符串稍有不同啊,具体可参考下面的链接:
http://zhidao.baidu.com/question/34887867.html" target="_new">http://zhidao.baidu.com/question/34887867.html
2008-04-27 19:19 | Klesh Wong      

#6楼   回复  引用  查看    

我也是郁闷了好几天了,
不只like,参数化也是这样
update t1 set uname=@uname,usex=@usex where id=@id
影响为0行,更怪的是某个语句居然能成功!!
就这样我放弃了Access用了Sql server 2000!!!
高人指点!
2009-06-20 14:23 | loogn      

#7楼   回复  引用  查看    

知道啦,
参数和名字,位置都有关
2009-06-20 14:43 | loogn      



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1171609




相关文章:

相关链接: