我有一个使用连接字符串在32位上正常运行的应用程序:
Driver={Microsoft Access Driver (*.mdb)}; Dbq=MyDatabase.mdb;
没有安装Office的PC上在C ++中使用ADO。
我已将其转换为x64,并且无论主机PC是否已安装x64 Office,我都相信我需要安装某种形式的Access驱动程序。因此,我抓住了[Microsoft Access Database Engine 2016 Redistributable],并进行了安装。 通常,一切正常,但是某些SQL查询失败。最引人注目的是使用LIKE '%somevalue%'
的程序-现在我知道%
是ANSI-92,但正如我所说的那样,它运行良好,因此假定与ADO有关(我想我可以将其更改为ALIKE
)。
我不明白,如果我安装了Access数据库引擎2010,那么所有工作都将按预期进行。似乎Access数据库引擎2016中的内容有所不同。我确实在寻找一些发行说明/重大更改,但找不到任何东西。
所以我的问题是Microsoft Access Database Engine 2016中的SQL解析方式是否发生变化,我是否应该让客户安装2010版本?
注意:另一个似乎失败的查询是带有Yes/No
字段的表。我有一个查询,检查:field <> 0
,这将引发异常。
更新:如果我安装了Microsoft Access 2016 Runtime,那么一切似乎都可以正常工作。因此,该问题似乎是特定的Microsoft Access Database Engine 2016
总而言之:
No Office Installed: Installed Access 2016 x64 Database Engine: Query FAILS
No Office Installed: Installed Access 2010 x64 Database Engine: Query PASSES
32bit Office Installed: Installed Access 2016 x64 Database Engine: Query FAILS
32bit Office Installed: Installed Access 2010 x64 Database Engine: Query PASSES
x64 Office Installed: Installed Access 2016 x64 Database Engine: Query PASSES
查询在哪里:
SELECT * from sometable WHERE somefield LIKE '%ABC%';
设置为:
Window 10 Version 1909
32 bit Office: Microsoft Office MSO 16.0.12325.20280 32bit
64 bit Office: Microsoft Office MSO 16.0.12325.20280 64bit
从此处访问数据库引擎(x64):microsoft.com/en-us/download/details.aspx?id=54920
我的应用是x64
我有一个使用连接字符串可以在32位上正常运行的应用程序:Driver = {Microsoft Access Driver(* .mdb)}; Dbq = MyDatabase.mdb;在没有Office安装的PC上使用C ++使用ADO。我...