Как подключить Java к Ms Access 2010?

Есть ли у кого-нибудь идеи по подключению Access 2010 к java jdbc. Я использую этот метод, но когда я его называю, он не работает:

public void loadDb(){
   try{
       Class.forName("sun.jdbc.JdbcOdbcDriver");
       File f = new File(System.getProperty("user.dir"))       
       con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Acess Driver (*.mdb, *.accdb)}; DBQ="+ f.getPath() + "//db//JavaAccess.accd","","");
       st = con. createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
   }catch(ClassNotFoundException e){e.printStackTrace();
   }catch(SQLException e){e.printStackTrace();}
}

//con and st are already defined

Ответ 1

В соответствии с msdn оно должно быть sun.jdbc.odbc.JdbcOdbcDriver. Поэтому замените эту строку кода:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Ответ 2

Ошибка орфографии? Возможно, эта строка:

con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Acess Driver (*.mdb, *.accdb)}; DBQ="+ f.getPath() + "//db//JavaAccess.accd","","");

должен быть

con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+ f.getPath() + "//db//JavaAccess.accd","","");

Доступ имеет 2 C

Ответ 3

Создать соединение

public static Connection getConnection() {
     String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
        String url = "jdbc:odbc:anime"; //anime is the database
        String username = "ipieluser"; //leave blank if none
        String password = "ipielpassword"; //leave blank if none
        try {
      Class.forName(driver);
     } catch (ClassNotFoundException e) {
      e.printStackTrace();
     }
        try {
      return DriverManager.getConnection(url, username, password);
     } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     return null;
    }

Как позвонить:

public static void main(String args[]) {
 try {
  Connection conn = getConnection();
     Statement st = conn.createStatement();
     st = conn.createStatement();
     ResultSet rs = st.executeQuery("SELECT * FROM localTable");     

  //get and displays the number of columns
     ResultSetMetaData rsMetaData = rs.getMetaData();
  int numberOfColumns = rsMetaData.getColumnCount();
     System.out.println("resultSet MetaData column Count=" + numberOfColumns);

     st.close();
     conn.close();
 } catch(Exception e) {
  System.out.println(e.getMessage());
 }
}

Ответ 4

Используйте UCanAccess Драйвер JDBC:

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");  // can be omitted in most cases
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://<mdb or accdb file path>",user, password); 

например:

Connection conn=DriverManager.getConnection("jdbc:ucanaccess://c:/pippo.mdb");

Итак, для вашего примера это будет

con = DriverManager.getConnection("jdbc:ucanaccess://"+f.getPath()+"/db/JavaAccess.accd")

Ответ 5

Ответ на Rishab помог мне подключиться к моей базе данных доступа.

Я сделал следующую коррекцию в коде:

Вместо

String url = "jdbc:odbc:anime"; //anime is the database

Я сделал

String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" + "d://institute//institutedata.accdb";

Я явно определил драйвер и полное имя базы данных с указанием пути и расширения.