- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近将数据库从 .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:\\App\\Main\\bin\\Debug\\db.xxx;
Jet OLEDB:Database Password=MyPass;
注意:我为我的 .accdb 文件使用了自定义扩展名,这用于 .mdb 文件没有问题,我认为这应该不是问题(已测试)。
最佳答案
我没有发现您的连接字符串有问题。我仍然会从 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# 连接字符串中使用它。
关于C# enctypted .accdb 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10703954/
我最近将数据库从 .mdb (MS Access 2003) 更新为 .accdb (MS Access 2010)。 通过这次更新,我还将我的提供程序从:Microsoft.Jet.OLEDB.4.
我是一名优秀的程序员,十分优秀!