Java MSAccess DSN Меньше - PullRequest
       37

Java MSAccess DSN Меньше

1 голос
/ 07 июня 2011

Итак, проблема в том, что я хочу подключиться к базе данных 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 Ответ

3 голосов
/ 07 июня 2011

Существует два типа паролей для файлов базы данных MS Access:

  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", ""

Возможно, это может сработать для переключения с текущего драйвера ODBC для доступа на поставщика Microsoft OLE DB для ODBC.Или, может быть, с текущим драйвером ODBC, если вы переключите

Database Password=MyDbPassword;

на

Jet OLEDB:Database Password=MyDbPassword;

Я не знаю.Но мне кажется, что пароль базы данных только мешает вам.Вы уже знаете, что можете подключиться, если вы удалите пароль из базы данных.

...