Java MS Access DSN Less

时间:2011-06-07 06:07:51

标签: java ms-access jet dsn

所以问题是我想连接到每次打开密码时都有密码的 msaccess数据库

  • 如果我直接打开访问文件,密码就有效。
  • 如果删除密码,我可以建立连接,这意味着如果没有密码,我的代码可以正常工作
  • 使用数据库工具中的“设置数据库密码”设置密码
  • MS Access 2007(但我使用.mdb)

这是代码

String dbFile = "db.mdb";
String connectionString = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
String driverID = ";DriverID=22;READONLY=true;pwd=qwer}";
if (CONNECTION == null || CONNECTION.isClosed()) {
   dbURL = connectionString + dbFile.trim() + driverID;
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   CONNECTION = DriverManager.getConnection(dbURL);
}

----------------------------------------------
Error Code : java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Not a valid password.
----------------------------------------------

我已经尝试将参数添加到get连接但是它不起作用。 请帮助:)

1 个答案:

答案 0 :(得分:3)

MS Access数据库文件有两种类型的密码:

  1. 用户密码
  2. 数据库密码
  3. 使用用户密码,您可以在连接字符串中提供用户名和密码。

    ;User Id=admin;Password=;
    

    对于数据库密码,您需要在连接字符串中使用不同的标识符,以将密码区分为数据库密码而不是用户密码。

    ;Database Password=MyDbPassword;
    

    我个人不使用数据库密码。这个功能在安全性方面没有多大帮助,所以看起来它比它的价值更麻烦。

    编辑:我不知道是否可以使用ODBC连接提供数据库密码。我发现的所有连接示例在包含数据库密码时都使用了OLE DB。

    Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\\somepath\\mydb.mdb;" & _
                     "Jet OLEDB:Database Password=MyDbPassword;", "admin", ""
    

    也许它可以从当前的Access ODBC驱动程序切换到用于ODBC的Microsoft OLE DB提供程序。或者如果切换

    ,可能使用当前的ODBC驱动程序
    Database Password=MyDbPassword;
    

    Jet OLEDB:Database Password=MyDbPassword;
    

    我不知道。但在我看来,数据库密码只是在这里妨碍你。如果从数据库中删除密码,则您已经知道可以连接。