我需要从VB2010应用程序打开受密码保护的Access 2010数据库。没有密码,连接工作正常,所以我知道我已正确设置所有其他参数。但是当我将密码添加到连接字符串时,我收到错误,"多步OLE DB操作产生错误。检查每个OLE DB状态值(如果可用)。没有工作。"我知道密码是正确的,因为当我在Access中直接打开数据库时将其复制并粘贴到密码对话框中时,它可以正常工作。
这是我使用的代码。 adapter.fill命令发生错误:
Dim conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + Application.StartupPath + "\MyData.accdb;Jet OLEDB:Database Password=MyPassword;")
Dim command As OleDbCommand = New OleDbCommand()
command.Connection = conn
command.CommandText = "SELECT * FROM MyTable"
Dim table As DataTable = New DataTable()
Dim adapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(command)
adapter.Fill(table)
答案 0 :(得分:1)
我认为这是Access 2010中的一个错误:https://www.connectionstrings.com/access-2010/
引用:
使用数据库密码这是您使用时的连接字符串 使用密码保护Access 2007 - 2013数据库 Access中的“设置数据库密码”功能。
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb; Jet OLEDB:Database Password=MyDbPassword;
有些密码长度超过14个字符的报告。还有一些人物 可能会引起麻烦。如果您遇到问题,请尝试更改密码 一个普通字符的短文。
注意!报道说a 使用Access 2010 - 2013默认加密方案加密的数据库 不适用于此连接字符串。在Access;尝试选项和 改为选择2007加密方法。这应该使它工作。我们的确是 不知道任何其他解决方案。如果有其他解决方案请联系 可以使用!
另外,作为提示,您无需说
Dim conn As OleDbConnection = New OleDbConnection("Connection String")
你可以做到
Dim conn As New OleDbConnection("Connection String)
答案 1 :(得分:0)
自:https://stackoverflow.com/posts/22485495/edit
我用来做这个的方法实际上非常简单:
Set db = CurrentDb
Set dblink = DBEngine.OpenDatabase(strDbFile, False, False, ";PWD=" & strP)
For Each strTable In strLinkedTablesArray
DoCmd.TransferDatabase acLink, "Microsoft Access", dblink.name, acTable, _
strTable, strTable
Next
希望有所帮助
答案 2 :(得分:0)
暂时解决这个问题。上面提到了所有的线索,但必须将它们全部合并在一起......
在文件 - 选项 - 客户端设置下(滚动到底部)...
默认开放模式=共享
默认记录锁定=无锁定
加密方法=使用旧版
加密并重新加密数据库
.Provider = "Microsoft.ACE.OLEDB.12.0;"
.ConnectionString = "Data Source=c:\dt\GenericDetail.accdb;Jet OLEDB:Database Password='ThePassword';"
.Open