在VB2010中打开受密码保护的Access 2010数据库

时间:2014-08-09 02:07:15

标签: vb.net passwords ms-access-2010

我需要从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)

3 个答案:

答案 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

参考:https://social.msdn.microsoft.com/Forums/en-US/210e52e6-cae7-4312-a08a-20c3e50bc17d/ace-oledb120-excel-password-protected-access-trouble?forum=adodotnetdataproviders