OLE DB 访问 Access查询 失败的“陷阱”

在Access 2000中,查询的LIKE子句不能使用%,需用*替代。然而,OLE DB的SQL LIKE只支持%,导致使用LIKE和*的命名查询失败。为解决此问题,需要将Access查询中的LIKE条件改为使用%,即使这在Access内部不起作用,但在OLE DB中可以正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MS ACCESS 2000, “查询”(切换到SQL视图)的 LIKE 子句中,不能使用 % ,可以使用 * (匹配 零个或多个字符)。

It is important to note that the ANSI SQL wildcards (%) and (_) are only available with Microsoft® Jet version 4.X and the Microsoft OLE DB Provider for Jet.They will be treated as literals if used through Microsoft Access or DAO.

详情请参考这儿:https://msdn.microsoft.com/en-us/library/bb221192(v=office.12).aspx

但是,

OLE DB 的 SQL LIKE  语句 只支持 %

那么,想在应用程序里 用OLE DB访问 使用了LIKE和 * 的命名查询,总会失败的!


只能将就一下了,解决方法就是把Access 2000中的查询 写成用%的。


比如:

在ACCESS里新建一个查询:SELECT * from table WHERE table.field Like 'ctrl*',命名为query1。

那么,OleDbCommand 不论是 “select * from query1”,还是 “Execute query1”,

还是直接“query1”(but CommandType = CommandType.StoredProcedure;),

都不行。


因为,SELECT * from table WHERE table.field Like 'ctrl*在MS ACCESS软件里能工作,但在OLE DB里不能工作。


解决方法:改成 SELECT * from table WHERE table.field Like 'ctrl%'虽然在ACCESS里不工作,但OLE DB可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值