我发现this page建议将“Jet OLEDB:System Database”项添加到我的连接字符串中,然后为Open
提供用户名和密码参数。不幸的是,似乎.NET OleDb类似乎没有这个......我尝试了以下代码:
testConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbFile +
";Jet OLEDB:System Database=" + Path.GetDirectoryName(mdbFile) + "\\system.mdw;" +
"Jet OLEDB:System Username=***;Jet OLEDB:System Password=***");
但是,这似乎在推出“无法找到可安装的ISAM”DbException
之前已经挂了很长时间。
有没有人有任何想法?
编辑:我尝试使用以下连接字符串,它停止了异常,但是我没有让我访问任何表,比如在没有正确设置工作组的情况下打开Access时会发生什么。
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbFile +
";Jet OLEDB:System Database=" + Path.GetDirectoryName(mdbFile) + "\\system.mdw;" +
"User ID=***;Password=***";
答案 0 :(得分:0)
我现在感觉自己像个白痴,但是不小心在该页面上滚动了一下,我注意到一些连接字符串有一个“用户ID”和“密码”参数。更改连接字符串以使用这些而不是尝试将它们传递给“Jet OLEDB:*”修复了问题。
即,我的最终连接字符串是:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbFile +
";Jet OLEDB:System Database=" + Path.GetDirectoryName(mdbFile) + "\\system.mdw;" +
"User ID=***;Password=***";