0

問題は、開くたびにパスワードを持つ 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 接続にパラメーターを追加しようとしましたが、うまくいきませんでした。助けてください :)

4

1 に答える 1

2

MS Access データベース ファイルには 2 種類のパスワードがあります。

  1. ユーザーパスワード
  2. データベースのパスワード

ユーザー パスワードを使用して、接続文字列でユーザー名とパスワードを指定します。

;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 ドライバーから Microsoft OLE DB Provider for ODBC に切り替えるとうまくいくかもしれません。または、切り替える場合は現在のODBCドライバーを使用する可能性があります

Database Password=MyDbPassword;

Jet OLEDB:Database Password=MyDbPassword;

知らない。しかし、データベースのパスワードが邪魔をしているように思えます。データベースからパスワードを削除すれば、接続できることがすでにわかっています。

于 2011-06-07T06:33:21.527 に答える