error conexion bd access con java

Iniciado por aquiles12, 27 Enero 2015, 19:55 PM

0 Miembros y 1 Visitante están viendo este tema.

aquiles12

Buenas, estoy intentando conectar mi base de datos access con un programa java, en principio he puesto esto:

Código (java) [Seleccionar]

private final String NombreBD = "dbGesGolf.mdb";
    private final String ConexionBD = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + this.NombreBD;
    private String SentenciaSQL;
    private Connection CanalBD;
    private Statement Instruccion;
    private ResultSet Resultado;
   
   
    public ConexionAccess()
    {
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            this.CanalBD = DriverManager.getConnection(this.ConexionBD);
            this.Instruccion = this.CanalBD.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        }
        catch(SQLException SQLE)
        {
            JOptionPane.showMessageDialog(null,"ERROR EN LA CONEXION CON BD\nERROR : " + SQLE.getMessage());
        }
        catch(ClassNotFoundException CNFE)
        {
            JOptionPane.showMessageDialog(null,CNFE.getMessage() + "ERROR DRIVER BD JAVA\nERROR : ");
        }}


me salta el error de CNFE (ERROR DRIVER BD JAVA) y nose por que ya he puesto mi access en el administrador de base de datos ODBC.

si alguien me pudiese ayudar lo agradeceria. muchas gracias de antemano.

Usuario Invitado

¿Has agregado el driver al ClassPath?
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

aquiles12

Como lo agrego? Y donde lo consigo?  :huh:

Usuario Invitado

#3
Si usas Java 7 no es necesario cargar el driver odbc:

Código (=java) [Seleccionar]

// ya no es necesario
Class.forName("jdbc.odbc.JdbcOdbcDriver");


Si usas Java 8 lamento decirte que ha sido removido por considerarse deprecated. Y Oracle tiene razón en considerarlo así.

El primer inconveniente es que ese driver, tiene algunos problemas con Unicode, no muestra algunos carácteres correctamente y puede que en Español no de problemas, pero en otros lugares donde hablen otros lenguajes sí.

Otro inconveniente es que sólo funciona en plataforma Windows. Y por último, existen dos versiones: para 32bits y 64bits. Totalmente innecesario, puede haber conflicto si usas las dos versiones en tu aplicación.

Alternativamente, te recomiendo la librería UCanAccess. Es una librería escrita en 100% puro Java y que hace uso de Jackess y HSQLDB.

Ésta librería depende de las anteriormente mencionadas y también de Apache Log4j. Afortunadamente cuando bajes el zip de UCanAccess, estarán ahí incluidas todas las librerías de las que depende.

AGREGAR LAS LIBRERÍAS AL PROYECTO

Eclipse: Click derecho sobre el proyecto, ir a la opción Build Path y elegir la opción Configure Build Path.... Se te abrirá una ventana, aquí haz click en Add External JARs o en Add JARs si tienes las librerías en un folder dentro de tu proyecto y Eclipse te mostrará una ventana para que selecciones las librerías. Una vez seleccionadas las librerías, debe quedarte así:


Netbeans: Expande el proyecto y haz click en la carpeta Libraries y elige Add JAR/folder. Luego solo navega hasta las librerías en la ventana que te muestra y elígelas. Luego de agegar las librerías debe quedarte así:



Ahora ya puedes trabajar con tu BBDD Access muy fácilmente:

Código (java) [Seleccionar]
Connection conn=DriverManager.getConnection(
       "jdbc:ucanaccess://D:/access_db/prueba/prueba.accdb");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT [name] FROM [User]");
while (rs.next()) {
   System.out.println(rs.getString(1));
}


Si resolviste tu duda, edita el título del post y agrégale al principio [Resuelto] y le asignas el ícono del check verde.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

aquiles12