2011-06-14 3 views
10

누구든지 Access 2010을 java jdbc에 연결하는 방법에 대한 아이디어가 있습니까? 나는이 방법을 사용하지만, 나는 그것을 호출 할 때, 그것은 작동하지 않습니다Ms Access 2010에 Java를 연결하는 방법은 무엇입니까?

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 
+0

될 것입니다 당신은 그것들이 유용하다는 것을 알았습니다 (거기에 진드기가 있음을보십시오). 또한 upvotes를 사용하십시오. 더 많은 답변을 얻는 데 도움이 될 것입니다. – Rishabh

+0

JDBC-ODBC Bridge는 Java 8에서 ** 제거 **되었으며 지원되지 않습니다 (참고 : [here] (http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc). /bridge.html) 및 [here] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6345277)). [UCanAccess] (http://ucanaccess.sourceforge.net/site.html)는 대중적인 대안입니다 (자세한 내용은 [here] (http://stackoverflow.com/q/21955256/2144390)). –

답변

8

msdn에 따르면이 sun.jdbc.odbc.JdbcOdbcDriver을해야합니다.

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

5

연결 만들기

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()); 
} 
} 
+0

안녕하세요, getConnection() 메서드에 액세스 할 수 없습니다. 그 이유는 해당 형식이 void이며 반환 할 수 없다는 것과 그 밖의 다른 팔레트에서 getConnection() 메서드를 인식하지 못하기 때문입니다. –

+0

public으로 선언하여 코드를 편집했습니다. – Rishabh

6

맞춤법 오류 그래서 코드 줄을 교체? 아마도이 라인은 :

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의

+0

Office 64 비트를 실행하는 64 비트 시스템에 더 좋은 솔루션입니다. 64 비트 인터페이스를 통해 32 비트 Access 데이터베이스를 노출하려면 Access 데이터베이스 엔진이 필요할 수도 있습니다. (http://www.microsoft.com/en-us/download/details.aspx?id=13255) – Barett

0

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

했다 I 명시 적으로 정의 된 드라이버와 경로와 확장자를 가진 전체 데이터베이스의 이름입니다.

2

사용 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") 
관련 문제