2013-10-27 4 views
5

Я пытаюсь сделать проект с подключением к db (MS Access 2010) Я использую этот урок on CodeProject.Соединение Java Access DB

import java.sql.*; 

public class DbAccess 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      String database = 
       "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;"; 
      Connection conn = DriverManager.getConnection(database, "", ""); 
      Statement s = conn.createStatement(); 

      // create a table 
      String tableName = "myTable" + String.valueOf((int)(Math.random() * 1000.0)); 
      String createTable = "CREATE TABLE " + tableName + 
           " (id Integer, name Text(32))"; 
      s.execute(createTable); 

      // enter value into table 
      for(int i=0; i<25; i++) 
      { 
       String addRow = "INSERT INTO " + tableName + " VALUES (" + 
        String.valueOf((int) (Math.random() * 32767)) + ", 'Text Value " + 
        String.valueOf(Math.random()) + "')"; 
       s.execute(addRow); 
      } 

      // Fetch table 
      String selTable = "SELECT * FROM " + tableName; 
      s.execute(selTable); 
      ResultSet rs = s.getResultSet(); 
      while((rs!=null) && (rs.next())) 
      { 
       System.out.println(rs.getString(1) + " : " + rs.getString(2)); 
      } 

      // drop the table 
      String dropTable = "DROP TABLE " + tableName; 
      s.execute(dropTable); 

      // close and cleanup 
      s.close(); 
      conn.close(); 
     } 
     catch(Exception ex) 
     { 
      ex.printStackTrace(); 
     } 
    } 
} 

Но я получаю странное исключение: java.sql.SQLException: [Microsoft] [????????? ????????? ODBC] ???????? ?????? ?? ?????? ? ?? ?????? ???????, ???????????? ?? ?????????

java.sql.SQLException: [Microsoft] [????????? ????????? ODBC] ???????? ?????? ?? ?????? ? ?? ?????? ???????, ???????????? ?? ????????? на sun.jdbc.odbc.JdbcOdbc.createSQLException (JdbcOdbc.java:6956) при sun.jdbc.odbc.JdbcOdbc.standardError (JdbcOdbc.java:7113) в sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect (JdbcOdbc. Java: 3072) на sun.jdbc.odbc.JdbcOdbcConnection.initialize (JdbcOdbcConnection.java:323) в sun.jdbc.odbc.JdbcOdbcDriver.connect (JdbcOdbcDriver.java:174) в java.sql.DriverManager.getConnection (DriverManager.java:579) в java.sql.DriverManager.getConnection (DriverManager.java:221) в dbaccess.DbAccess.main (DbAccess.java:28)

Я Google это и найти другие вопросы по Стек такой: Stack Post

Поэтому я добавляю все драйверы ODBC, которые могут помочь мне подключить файл * .mdb. Но ничего хорошего hepend. (

Что это и как подключиться к Access DB?

+1

Ваше сообщение об ошибке состоит из вопросительных знаков? –

+0

есть. поэтому я не знаю, в чем именно ошибка, но Google дает мне много сообщений, таких как «java.sql.SQLException: [Microsoft] [ODBC Driver Manager] Имя источника данных не найдено, а драйвер по умолчанию не указан» – user2167382

+0

, пожалуйста, поделитесь кодом и трассировку стека. –

ответ

3

Там нет ничего принципиально плохого в вашем коде, потому что я вставил его в Eclipse, и он побежал отлично. Единственное изменение, которое я сделал было указать путь к файлу базы данных, то есть, вместо того, чтобы использовать

DBQ=myDB.mdb 

Я использовал

DBQ=C:\\__tmp\\myDB.mdb 

Я также был запущен его под 32-битной JVM (на 32-битном компе Uter). Итак, мои предложения будут

  1. Попробуйте указать полный путь к файлу .mdb, как я сделал.

  2. Если вы все еще получаете сообщение об ошибке, проверьте свою среду Java, чтобы узнать, работает ли ваше приложение в 64-разрядной JVM. Если это так, то Driver={Microsoft Access Driver (*.mdb)} не будет работать: нет 64-разрядной версии старого драйвера Jet ODBC. В этом случае у вас есть два варианта:

    i. Настройте приложение для работы в 32-разрядной JVM или

    ii. Загрузите и установите 64-разрядную версию механизма базы данных доступа с here, а затем используйте Driver={Microsoft Access Driver (*.mdb, *.accdb)}.

+0

Спасибо за ответ, firstly - i chanded path, но это не помогло .. И вопрос - как я могу настроить мое приложение на 32 JVM? потому что я использую 32-разрядный MS Office, и установка x64 Access Database Engine невозможна, поскольку я пытаюсь использовать – user2167382

+0

@ user2167382 Какую IDE вы используете? –

+0

Я использую NetBeans 7.3.1 – user2167382

0

программа JDBC использует "sun.jdbc.odbc.JdbcOdbcDriver" драйвер для подключения к базе данных MS Access, до Java 1.7 версии

Ссылка:http://www.benchresources.net/jdbc-msaccess-database-connection-steps/

Начиная с версии Java 1.8, программа JDBC использует «net.ucanacces s.jdbc.UcanaccessDriver "драйверы для подключения к базе данных MS Access

Ссылка:http://www.benchresources.net/jdbc-msaccess-database-connection-steps-in-java-8/

Смежные вопросы