对于我做的一个项目,我需要使用 OleDB 从 Sharepoint 中检索列表。下面你可以看到我使用的代码:
string ConnectionString = "WSS;HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.12.0";
string query = "Select * From [Table]";
OLEDBConnection conn = new OLEDBConnection(ConnectionString);
conn.Open();
OLEDBDataAdapter dataAdapter = new OLEDBDataAdapter(query, conn);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
代替 xxx、yyy、zzz 我插入从 Sharepoint 生成的 .iqy 文件中获得的值。
计算机在 Windows 10 Enterprise x64 上运行,并预装了 Office Professional 2016 x86(请注意,无法安装 64 位 Office),包括 Access 2016。Sharepoint 服务器是 Sharepoint 2013 版本。
Invalid argument
使用此设置,代码在打开连接时引发异常。我还确保 12.0 提供程序已注册。尝试将提供程序更改为 16.0 版本确实导致完全相同的异常。
有人建议我尝试使用“Microsoft Access Database Engine 2010”(x86)。
从上面的 Microsoft 页面代码安装该引擎后,该引擎开始工作。我能够建立连接并使用查询获取列表。
但是,在打开 Access 之后,在它打开之前,它会运行一些修复(触发 Office Professional 安装)。在此修复之后,代码再次停止工作,直到我重新安装“Microsoft Access Database Engine 2010”
我尝试使用 Access Linked Table 连接字符串中的参数。(它使用 ACEWSS; 参数而不是 WSS;),但没有任何结果。
我还尝试从连接字符串中删除 WSS 参数,但随后代码抛出错误Could not find installable ISAM
。
请在下面找到用于连接结果的所有连接字符串:
默认访问引擎(来自 Office):
WSS;HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.12.0"
- 无效参数
ACEWSS;HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.12.0"
- 无效参数
HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.12.0"
- 找不到可安装的 ISAMWSS;HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.16.0"
- 无效参数
WSS;HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.16.0"
- 无效参数
HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.16.0"
- 找不到可安装的 ISAM已安装 Access 数据库引擎 2010:
WSS;HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.12.0"
- 这个很好用!ACEWSS;HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.12.0"
- Microsoft Access 数据库引擎找不到对象“表”。
HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.12.0"
- 找不到可安装的 ISAMWSS;HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.16.0"
- 应用程序停止工作。
ACEWSS;HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.16.0"
- 应用程序停止工作。HDR=YES;IMEX=2;DATABASE=XXX;LIST=YYY;RetrieveIds=Yes;TABLE=ZZZ;Provider=Microsoft.ACE.OLEDB.16.0"
- 找不到可安装的 ISAM
我已经没有想法了,如何建立此连接并在 Access 使用的默认驱动程序上工作,也不明白为什么相同的连接字符串适用于安装的 2010 版本并且不适用于默认的 Access 2016 驱动程序。我将不胜感激任何建议。