Как подключить Java к Ms Access 2010? - PullRequest
10 голосов
/ 14 июня 2011

У кого-нибудь есть идеи, как подключить 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

Ответы [ 6 ]

8 голосов
/ 14 июня 2011

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

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

6 голосов
/ 22 ноября 2011

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

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

5 голосов
/ 14 июня 2011

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

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());
 }
}
2 голосов
/ 04 декабря 2014

Использование 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")
0 голосов
/ 26 июля 2018

Как и сегодня, мы столкнулись с той же проблемой и обнаружили, что для проверки версии java, если ваша версия java, если версия java выше 7, то sun.jdbc.odbc.JdbcOdbcDriver не будет поддерживаться, поэтому просто проверьтеверсия Java.

0 голосов
/ 07 сентября 2013

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

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

Вместо

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

Я сделал

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...