2011-06-14 42 views
10

¿Alguien tiene alguna idea de cómo conectar Access 2010 a java jdbc? Yo uso este método, pero cuando lo llamo, no funciona:¿Cómo conectar java a Ms Access 2010?

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

También, usted debe aceptar respuestas a sus preguntas si has encontrado que son útiles (ver que hay un tic) y también use votaciones ascendentes. Te ayudará a obtener más respuestas. – Rishabh

+0

Tenga en cuenta que el puente JDBC-ODBC Bridge ** se ha eliminado ** de Java 8 y no es compatible (ref: [here] (http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc) /bridge.html) y [aquí] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6345277)). [UCanAccess] (http://ucanaccess.sourceforge.net/site.html) es una alternativa popular (detalles [aquí] (http://stackoverflow.com/q/21955256/2144390)). –

Respuesta

8

Según msdn Cabe sun.jdbc.odbc.JdbcOdbcDriver. Así reemplazar esta línea de código:

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

5

Crear conexión

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

Como llamar

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

hola chico, todavía no puedo acceder al método getConnection() ya que dice que el tipo es nulo no se puede devolver, y por otro lado, no reconoce el método getConnection() en algunos otros lugares. –

+0

Declararlo como público funcionará También he editado el código. – Rishabh

6

error de ortografía? Tal vez esta línea:

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

debe ser

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

acceso tiene

+0

Esta es una solución mejor para sistemas de 64 bits que ejecutan Office de 64 bits. También puede necesitar el motor de base de datos de Access para exponer la base de datos de acceso de 32 bits a través de una interfaz de 64 bits. (http://www.microsoft.com/en-us/download/details.aspx?id=13255) – Barett

0

respuesta de 2 C de Rishab me ayudó a conectar a mi base de datos de acceso.

Yo después de la corrección en el código:

En lugar de

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

hice

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

me controlador definido de forma explícita y el nombre de base de datos completa con la ruta y la extensión.

2

Uso UCanAccess controlador 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); 

por ejemplo:

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

Así, por tu ejemplo Será

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