加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#enctypted .accdb连接

发布时间:2020-12-16 07:00:01 所属栏目:百科 来源:网络整理
导读:我最近将我的数据库从.mdb(MS Access 2003)更新为.accdb(MS Access 2010). 通过此更新,我还将我的提供程序从Microsoft.Jet.OLEDB.4.0更新为Microsoft.ACE.OLEDB.12.0 当我使用没有密码的.accdb文件时,连接正常,但是一旦我选择了 Encrypt with Password 我尝
我最近将我的数据库从.mdb(MS Access 2003)更新为.accdb(MS Access 2010).

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

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

Encrypt with Password

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

Cannot open database ”. It may not be a database that your
application recognizes,or the file may be corrupt.

使用连接字符串:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:AppMainbinDebugdb.xxx;
Jet OLEDB:Database Password=MyPass;

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

解决方法

我没有看到你的连接字符串有问题.我仍然会从VBA尝试看看这项努力是否能够解决这个问题.

这个是从Access 2007开始工作的,我是否使用“accdb”或“xxx”文件扩展名命名了db文件.我的密码周围不需要单引号;无论我是否包含单引号,代码都成功了.

Public Sub OleDbToEncryptedAccdb()
    'Const cstrDb As String = "encryptd.accdb" '
    Const cstrDb As String = "encryptd.xxx"
    Const cstrFolder As String = "C:shareAccess"
    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版本用作提供程序.

? CurrentProject.Connection.Provider

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读