2011-06-14 12 views
10

Access 2010'un java jdbc'ye nasıl bağlanacağıyla ilgili herhangi bir fikri var mı? Bu yöntemi kullanmak, ama bunu çağırdığınızda, çalışmıyor:java Ms Access 2010'a nasıl bağlanır?

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

olacak onları faydalı buldunuz (orada bir kene var) ve Ayrıca upvotes kullanın. Daha fazla cevap almanıza yardımcı olacaktır. – Rishabh

+0

JDBC-ODBC Köprüsü'nün Java 8'den ** kaldırıldığını ve desteklenmediğini unutmayın (ref: [burada] (http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc /bridge.html) ve [here] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6345277)). [UCanAccess] (http://ucanaccess.sourceforge.net/site.html) popüler bir alternatiftir (detaylar [burada] (http://stackoverflow.com/q/21955256/2144390)). –

cevap

8

msdn göre, sun.jdbc.odbc.JdbcOdbcDriver olmalıdır.

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

5

bağlantı oluşturma

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

Nasıl çağırmak için:

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

Merhaba adam, türün geçersiz olduğunu söyleyemediği için getConnection() yöntemine hala erişemiyorum, diğer yandan getConnection() yöntemini diğer bazı örneklerde tanımıyor. –

+0

Çalışacağını herkese açık olarak bildirin Kodu bende düzenledim. – Rishabh

6

Yazım hatası Yani bu kod satırını değiştirmek? Belki de bu satırı:

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

olmalıdır

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

Erişim 2 C'nin

+0

Bu, Office 64 bit çalıştıran 64 bit sistemler için daha iyi bir çözümdür. Ayrıca 32-bit Access veritabanını 64-bit arabirim üzerinden açığa çıkarmak için Access Database Engine'e ihtiyacınız olabilir. (Http://www.microsoft.com/en-us/download/details.aspx?id=13255) – Barett

0

Rishab cevabı benim erişim veritabanına bağlanmak için bana yardımcı vardır. Ben kodunda düzeltme aşağıdaki vermedi

:

yerine

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

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

yaptığı açıkça tanımlanmış sürücü ve yolu ve uzantısı ile tam veritabanı adı.

2

Kullanım UCanAccess JDBC Sürücü:

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

örn:

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

Yani örneğin bu sorularınıza eğer cevaplarını kabul etmeleri gerektiğini de

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