Foro de elhacker.net

Programación => 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
  1. private final String NombreBD = "dbGesGolf.mdb";
  2.    private final String ConexionBD = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + this.NombreBD;
  3.    private String SentenciaSQL;
  4.    private Connection CanalBD;
  5.    private Statement Instruccion;
  6.    private ResultSet Resultado;
  7.  
  8.  
  9.    public ConexionAccess()
  10.    {
  11.        try
  12.        {
  13.            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  14.            this.CanalBD = DriverManager.getConnection(this.ConexionBD);
  15.            this.Instruccion = this.CanalBD.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  16.        }
  17.        catch(SQLException SQLE)
  18.        {
  19.            JOptionPane.showMessageDialog(null,"ERROR EN LA CONEXION CON BD\nERROR : " + SQLE.getMessage());
  20.        }
  21.        catch(ClassNotFoundException CNFE)
  22.        {
  23.            JOptionPane.showMessageDialog(null,CNFE.getMessage() + "ERROR DRIVER BD JAVA\nERROR : ");
  24.        }}
  25.  

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
  1. // ya no es necesario
  2. 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
  1. Connection conn=DriverManager.getConnection(
  2.        "jdbc:ucanaccess://D:/access_db/prueba/prueba.accdb");
  3. Statement s = conn.createStatement();
  4. ResultSet rs = s.executeQuery("SELECT [name] FROM [User]");
  5. while (rs.next()) {
  6.    System.out.println(rs.getString(1));
  7. }

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.