如何通过Jet访问Access工作组中受用户名/密码保护的Access数据库?

时间:2009-10-25 23:42:14

标签: c#

我发现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=***";

1 个答案:

答案 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=***";