web-dev-qa-db-ja.com

JavaをMSAccess 2010に接続する方法は?

Access2010を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
10
Tepken Vannkorn

msdn によると、_Sun.jdbc.odbc.JdbcOdbcDriver_である必要があります。したがって、次のコード行を置き換えます。

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

8
CoolBeans

スペルミス?おそらくこの行:

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があります

6
poduska

接続を作成

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());
 }
}
5
Rishabh

使用 CanAccess 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")
2
Anthony O.

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

ドライバーと完全なデータベース名をパスと拡張子で明示的に定義しました。

0
Sushil Pugalia