Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在VB2010中打开密码保护的Access 2010数据库_Vb.net_Passwords_Ms Access 2010 - Fatal编程技术网

Vb.net 在VB2010中打开密码保护的Access 2010数据库

Vb.net 在VB2010中打开密码保护的Access 2010数据库,vb.net,passwords,ms-access-2010,Vb.net,Passwords,Ms Access 2010,我需要从VB2010应用程序打开密码保护的Access 2010数据库。连接在没有密码的情况下工作正常,因此我知道我已正确设置了所有其他参数。但是,当我将密码添加到连接字符串时,会出现一个错误,“多步骤OLE DB操作生成错误。请检查每个OLE DB状态值(如果可用)。未完成任何工作。”我知道密码是正确的,因为在Access中直接打开数据库时,当我将其复制并粘贴到“密码”对话框中时,密码会起作用 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\m

我需要从VB2010应用程序打开密码保护的Access 2010数据库。连接在没有密码的情况下工作正常,因此我知道我已正确设置了所有其他参数。但是,当我将密码添加到连接字符串时,会出现一个错误,“多步骤OLE DB操作生成错误。请检查每个OLE DB状态值(如果可用)。未完成任何工作。”我知道密码是正确的,因为在Access中直接打开数据库时,当我将其复制并粘贴到“密码”对话框中时,密码会起作用

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Jet OLEDB:Database Password=MyDbPassword; 
这是我使用的代码。错误发生在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)
发件人:

我使用的方法实际上非常简单:

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

希望这有帮助

我认为这是Access 2010中的一个缺陷:

引述:

对于数据库密码,这是您在 使用密码保护Access 2007-2013数据库 Access中的“设置数据库密码”功能

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Jet OLEDB:Database Password=MyDbPassword; 
一些关于密码长度超过14个字符的问题的报告。还有一些人物 可能会引起麻烦。如果您遇到问题,请尝试更改密码 到一个具有正常字符的短字符

注意!有报道说 使用Access 2010-2013默认加密方案加密的数据库 无法使用此连接字符串。进入;尝试选项和 改为选择2007加密方法。这应该会让它起作用。是的 不知道还有其他解决办法。如有其他解决方案,请联系 有空

另外,作为提示,你不需要说

Dim conn As OleDbConnection = New OleDbConnection("Connection String")
你可以这么做

Dim conn As New OleDbConnection("Connection String)

在这个问题上工作了一段时间。所有的线索都在上面提到过,但必须把它们结合在一起

在文件-选项-客户端设置(滚动至底部)下

默认打开模式=共享

默认记录锁定=无锁定

加密方法=使用旧版

取消加密并重新加密数据库

    .Provider = "Microsoft.ACE.OLEDB.12.0;"
    .ConnectionString = "Data Source=c:\dt\GenericDetail.accdb;Jet OLEDB:Database Password='ThePassword';"
    .Open
参考: