我有一个x64应用程序,它使用Microsoft.ACE.OLEDB.12.0提供程序在Windows 7(x64)上读取MS Access数据库,它工作正常(安装了Office 2010).
在安装了Office 2013的Windows 8下运行的同一应用程序失败,并显示一条消息,指出提供程序无法打开以前的版本.
在安装了Office 2013的Windows 8下,还有Microsoft.ACE.OLEDB.15.0,但我已经仔细检查了我的代码并确定它在连接字符串中指定了12.0.
这个提供商有不同的"版本" - 或者有什么我错过了吗?
我已经在Windows 8下重新编译了一个使用x86平台的测试程序,并将提供程序更改为Microsoft.Jet.OLEDB.4.0并且它再次运行.不幸的是,该模块是一个更大的生态系统的一部分,需要能够在x64下运行(特别是插入到excel),并且该套件通过应用程序从供应商的网站下载访问数据库,因此它是转换数据库或将所有内容更改为x86不切实际.
提前致谢.
我正在努力解决如何为更多lambda构建表达式树的想法,例如下面的那个,更不用说可能有多个语句的东西了.例如:
Func<double?, byte[]> GetBytes
= x => x.HasValue ? BitConverter.GetBytes(x.Value) : new byte[1] { 0xFF };
Run Code Online (Sandbox Code Playgroud)
我很感激任何想法.
我已经明确地建立了如何在预先知道项目数量的情况下如下制作通用元组...
Type t = typeof(Tuple<,,>);
Type[] keys = new Type[] { typeof(string), typeof(string), typeof(int) };
Type specific = t.MakeGenericType(keys);
Run Code Online (Sandbox Code Playgroud)
但是如果"keys"数组中的对象数量是可变的呢?如何以初始分配到"t"开始滚动球?
干杯.克雷格