【问题标题】:C# enctypted .accdb connectionC# enctyped .accdb 连接
【发布时间】:2012-05-29 01:22:53
【问题描述】:

我最近将我的数据库从 .mdb (MS Access 2003) 更新为 .accdb (MS Access 2010)。

通过此更新,我还将我的提供程序从:Microsoft.Jet.OLEDB.4.0 更新为 Microsoft.ACE.OLEDB.12.0

当我使用没有密码的 .accdb 文件时连接正常,但是一旦我选择了

用密码加密

当我尝试打开连接时收到以下错误。

无法打开数据库''。它可能不是您的数据库 应用程序可以识别,否则文件可能已损坏。

使用的连接字符串:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\App\\Main\\bin\\Debug\\db.xxx;
Jet OLEDB:Database Password=MyPass;

注意:我为我的 .accdb 文件使用了自定义扩展名,这用于 .mdb 文件没有问题,我认为这应该不是问题(经过测试)。

【问题讨论】:

  • 有超过 14 个字符的密码问题报告。还有一些字符可能会引起麻烦。尝试将密码更改为带有普通字符的短密码。如果您使用的是您显示的密码 - 以上显然对您没有帮助! :]
  • 密码少于 10 个字符 :) ... 感谢您的提示
  • 斯坦格一号。祝你好运,如果我想到任何事情,比如 Arnie “我会回来的”......

标签: c# ms-access ms-access-2007 oledb


【解决方案1】:

我认为您的连接字符串没有问题。我仍然会从 VBA 中尝试一下,看看这种努力是否能解决这个问题。

无论我将 db 文件命名为“accdb”还是“xxx”文件扩展名,这都是从 Access 2007 开始工作的。我的密码不需要单引号;无论我是否包含单引号,代码都会成功。

Public Sub OleDbToEncryptedAccdb()
    'Const cstrDb As String = "encryptd.accdb" '
    Const cstrDb As String = "encryptd.xxx"
    Const cstrFolder As String = "C:\share\Access"
    Const cstrPassWord As String = "letmein"
    Dim cn As Object
    Dim strConnect As String

    strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
        cstrFolder & Chr(92) & cstrDb & _
        ";Jet OLEDB:Database Password='" & cstrPassWord & "';"
    Debug.Print strConnect
    Set cn = CreateObject("ADODB.Connection")
    cn.ConnectionString = strConnect
    cn.Open
    cn.Close
    Set cn = Nothing
End Sub

编辑:显然 Access 2010 提供了比早期 Access 版本更强大的加密方法。在 Access 2010 中打开db.xxx,检查哪个 ACE 版本用作Provider

? CurrentProject.Connection.Provider

如果它回复 Microsoft.ACE.OLEDB.14.0 之类的内容,请在您的 c# 连接字符串中使用它。

【讨论】:

  • 感谢您的样品。我试图从 PowerShell 初始化与此连接字符串的连接,但结果相同。我肯定做错了什么
  • 开始访问,看看你是否还能打开db.xxx。正如错误消息所暗示的那样,它可能已损坏。确保从运行失败的 c# 代码的同一用户帐户中尝试。
  • 我猜这是由于加密方法。 Access 2010 可以打开,Access 2007 不能。但是我没有使用 Access 2010,所以我只是在推测......但看看我的答案的编辑是否会为你指出一些有用的东西。
猜你喜欢
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 2022-08-09
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多