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

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可以。

你可能感兴趣的:(OLE DB 访问 Access查询 失败的“陷阱”)