not jdbcodbcdriver found could java ms-access jdbc jdbc-odbc

java - found - sun.jdbc.odbc.jdbcodbcdriver jar



java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver Excepción producida. ¿Por qué? (3)

Creé una base de datos de MS Access y le asigné un DSN. Quiero acceder a él a través de mi aplicación Java.

Esto es lo que estoy haciendo:

public class AccessDbConnection { public static void main(String[] args) { System.out.println("**ACCESS DB CONNECTION**"); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // for MS Access ... MS access driver loading String conURL = "jdbc:odbc:sampleDNS"; Connection con = DriverManager.getConnection(conURL); Statement statement = con.createStatement(); String qry = "SELECT * FROM Table1"; ResultSet rs = statement.executeQuery(qry); while(rs.next()) { String id = rs.getString("ID") ; String fname = rs.getString("First_Name"); String lname = rs.getString("Last_Name"); System.out.println(id + fname + lname); } } catch (ClassNotFoundException ex) { System.out.println("Classforname Exception!!"); Logger.getLogger(AccessDbConnection.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { System.out.println("DriverManager Exception!!"); Logger.getLogger(AccessDbConnection.class.getName()).log(Level.SEVERE, null, ex); } } }

Obtengo la excepción en la primera línea del bloque try. Eso es class.forname(".."); . ¿Por qué estoy teniendo esta excepción?


Para Java 7 simplemente puede omitir la declaración Class.forName() ya que realmente no es necesaria.

Para Java 8 no puede usar el puente JDBC-ODBC porque se ha eliminado. Deberás usar algo como UCanAccess en UCanAccess lugar. Para más información, ver

Manipular una base de datos de Access desde Java sin ODBC


Preparar:

My OS windows 8 64bit Eclipse version Standard/SDK Kepler Service Release 2 My JDK is jdk-8u5-windows-i586 My JRE is jre-8u5-windows-i586

Esta es la forma en que supero mi error.

Al principio, mi Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") tampoco funcionaba. Luego, inicio sesión en este UCanAccess y descargué el archivo ZIP de UCanAccess 2.0.8 (como dijo el Sr. Gordon Thompson) y lo descomprimí.

Luego también podrá encontrar estos archivos * .jar en esa carpeta descomprimida:

ucanaccess-2.0.8.jar commons-lang-2.6.jar commons-logging-1.1.1.jar hsqldb.jar jackcess-2.0.4.jar

Entonces, lo que hice fue copiar todos estos 5 archivos y pegarlos en estas 2 ubicaciones:

C:/Program Files (x86)/eclipse/lib C:/Program Files (x86)/eclipse/lib/ext

(Hice esa cosa graciosa porque no pude importar estas bibliotecas a mi proyecto)

Luego vuelvo a abrir el eclipse con mi proyecto. Luego veo todos los archivos * .jar en la carpeta de la biblioteca del sistema JRE de mi proyecto.

Finalmente mi código funciona.

public static void main(String[] args) { try { Connection conn=DriverManager.getConnection("jdbc:ucanaccess://C://Users//Hasith//Documents//JavaDatabase1.mdb"); Statement stment = conn.createStatement(); String qry = "SELECT * FROM Table1"; ResultSet rs = stment.executeQuery(qry); while(rs.next()) { String id = rs.getString("ID") ; String fname = rs.getString("Nama"); System.out.println(id + fname); } } catch(Exception err) { System.out.println(err); } //System.out.println("Hasith Sithila"); }


en JDK 8, jdbc odbc bridge ya no se usa y se elimina del JDK. para utilizar la base de datos de Microsoft Access en JAVA, necesita 5 bibliotecas JAR adicionales.

1- hsqldb.jar

2- jackcess 2.0.4.jar

3- commons-lang-2.6.jar

4- commons-logging-1.1.1.jar

5- ucanaccess-2.0.8.jar

agregue estas bibliotecas a su proyecto de Java y comience con las siguientes líneas.

Connection conn=DriverManager.getConnection("jdbc:ucanaccess://<Path to your database i.e. MS Access DB>"); Statement s = conn.createStatement();

ruta podría ser como E: / Proyecto / JAVA / DBApp

y luego tu consulta será ejecutada. Me gusta

ResultSet rs = s.executeQuery("SELECT * FROM Course"); while(rs.next()) System.out.println(rs.getString("Title") + " " + rs.getString("Code") + " " + rs.getString("Credits"));

ciertas importaciones que se utilizarán. prueba de capturar el bloque debe ser usado y algunas cosas necesarias no deben olvidarse.

Recuerde, no hay necesidad de conectar controladores como jdbc odbc o cualquier otra cosa.