Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: aquiles12 en 27 Enero 2015, 19:55 PM

Título: error conexion bd access con java
Publicado por: aquiles12 en 27 Enero 2015, 19:55 PM
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.
Título: Re: error conexion bd access con java
Publicado por: Usuario Invitado en 28 Enero 2015, 01:49 AM
¿Has agregado el driver al ClassPath?
Título: Re: error conexion bd access con java
Publicado por: aquiles12 en 28 Enero 2015, 04:15 AM
Como lo agrego? Y donde lo consigo?  :huh:
Título: Re: error conexion bd access con java
Publicado por: Usuario Invitado en 28 Enero 2015, 12:06 PM
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 (http://ucanaccess.sourceforge.net/site.html). Es una librería escrita en 100% puro Java y que hace uso de Jackess (http://jackcess.sourceforge.net/) y HSQLDB (http://hsqldb.org/).

Ésta librería depende de las anteriormente mencionadas y también de Apache Log4j (http://logging.apache.org/log4j/2.x/). 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í:

(http://i.stack.imgur.com/Bql1e.png)

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í:

(http://i.stack.imgur.com/e5FKa.png)


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.
Título: Re: error conexion bd access con java
Publicado por: aquiles12 en 30 Enero 2015, 18:31 PM
Muchas gracias ya esta resuelto.