【问题标题】:How to connect to an Access database protected with a password如何连接到受密码保护的 Access 数据库
【发布时间】:2014-07-08 23:00:54
【问题描述】:

我试图将我的应用程序连接到一个受密码保护的数据库,但我发现这样做很困难..我在不使用密码的情况下使用了这段代码并且运行没有问题...

    Dim Con As OleDb.OleDbConnection = New OleDb.OleDbConnection
    Dim DBProvider As String
    Dim DBSource As String
    Dim DS As New DataSet
    Dim DA As OleDb.OleDbDataAdapter
    Dim Sqlstr As String

    Try
        DBProvider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
        DBSource = "Data Source =" & App_Path & "/DBase/Dbx.accdb;"
        Con.ConnectionString = DBProvider & DBSource
        Con.Open()
        Sqlstr = "SELECT * FROM Dat_Barang"
        DA = New OleDb.OleDbDataAdapter(Sqlstr, Con)
        DA.Fill(DS, "Query")

    Catch ex As Exception
        MsgBox(ex.Message)
        Con.Close()
    End Try

然后我尝试使用密码保护我的数据库并添加我在互联网上找到的代码,结果与没有密码的结果没有太大区别..这段代码..

DBSource = "Data Source =" & App_Path & "/DBase/Dbx.accdb;Jet OLEDB:Database Password=1234567890;"

但是当我运行应用程序时,我的应用程序出现错误..

错误信息:

“无法打开数据库”,可能不是您的数据库 应用程序可以识别,否则文件可能已损坏。”

我的问题是如何解决这个问题..??谢谢。

编辑:

我使用 Office 2013..

【问题讨论】:

标签: vb.net


【解决方案1】:

Access 中,运行修复实用程序。它位于

Tools > Database Utilities > Compact and repair database

【讨论】:

  • @CrazyThink 试试这个提供商:Provider=Microsoft.Jet.OLEDB.4.0;
  • 新的错误消息:无法识别的数据库格式..我认为该提供商为 Office 2000-2003.. 谢谢。
  • @CrazyThink 好的,只要你知道你使用的是正确的提供商,我不确定。
【解决方案2】:

我已经多年没有使用 Access,但这是我以前使用的库代码。看看它。我上次更新它是针对 .accdb 文件格式的。

Public Overloads Sub Connect(pDatabase As String, pPassword As String)

    '[set up some paths and check the file exists stuff...]

    Dim vConnection = String.Empty
    If pDatabase.EndsWith(".accdb") Then
        vConnection = "Provider=Microsoft.ACE.OLEDB.12.0;"
    Else
        vConnection = "Provider=Microsoft.Jet.OLEDB.4.0;"
    End If
    vConnection &= "Data Source=" & pDatabase & ";"
    vConnection &= "Password='';"               ' Leave blank!
    vConnection &= "User ID=Admin;"             ' You may need to modify this!
    vConnection &= "Mode=16;"                   ' Standard sharing - for network access = adModeShareDenyNone
    vConnection &= "Jet OLEDB:Database Password='" & pPassword & "' ;"  ' Password goes here, not above.
    vConnection &= "Jet OLEDB:Engine Type=5;"
    vConnection &= "Jet OLEDB:Database Locking Mode=0;"         ' Don' t lock 
    vConnection &= "Jet OLEDB:Global Partial Bulk Ops= 2;"
    vConnection &= "Jet OLEDB:Global Bulk Transactions=1;"
    vConnection &= "Jet OLEDB:Create System Database=False;"        ' Do NOT create a system database (.mdw)
    vConnection &= "Jet OLEDB:Encrypt Database=False;"
    vConnection &= "Jet OLEDB:Don't Copy Locale on Compact=False;"
    vConnection &= "Jet OLEDB:Compact Without Replica Repair=False;"
    vConnection &= "Jet OLEDB:SFP=False;"

    ' [do stuff with connections, etc.
End Sub

我希望它对某人有用 - 天知道我可能永远不会再看它了!

【讨论】:

    猜你喜欢
    • 2011-02-03
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2017-10-25
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多