Suppression du pont JDBC ODBC dans java 8


À partir de Java 8, le pont JDBC-ODBC ne sera plus inclus avec le JDK.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // classNotFoundException is thrown

Existe-t-il une autre solution reliant le pont JDBC-ODBC?

Author: assylias, 2013-01-09

6 answers

Nous pouvons toujours utiliser JDBC-ODBC Bridge en java 8 aussi, il suffit de suivre cette recette simple:

  1. Télécharger un JDK 7 ou JRE 7.
  2. Allez dans le dossier JRE \ lib et trouvez le rt.jar
  3. Décompressez-le (si vous avez WinRAR ou 7zip installé) ou vous pouvez le renommer en rt.zip et décompressez-le.
  4. Copiez les dossiers sun\jdbc et sun\security\action, conservez la structure des dossiers. c'est-à-dire que vous devriez avoir la structure de dossiers comme ci-dessous:

    Sun --> Security --> Action
        --> JDBC
    
  5. Ouvrez une fenêtre CMD. Allez chez le parent dossier de Soleil dossier. Exécutez la commande: jar -cvf jdbc.jar sun

  6. La commande ci-dessus va créer un fichier nommé jdbc.jar
  7. Copier JDBC.jar dans votre dossier JDK8 ou JRE8 lib. Si cela ne fonctionne pas, essayez le dossier lib\ext.
  8. Copier jdbcodbc.dll de JRE \ bin de votre installation JRE 7 à JRE \ bin de votre installation JRE 8.
  9. Redémarrez votre JVM.

Comment activer le pont JDBC-ODBC pour JDK 8

 19
Author: frhack, 2018-01-19 18:59:30

Eh Bien, à mon avis, cette entrée de blog par un employé d'Oracle dit:

Je vous recommande d'utiliser un pilote JDBC fourni par le fournisseur de votre base de données ou un pilote JDBC commercial au lieu du pont JDBC-ODBC.

Pour quel type d'application utilisez-vous le pont JDBC-ODBC?

  • S'il s'agit de code de production, vous devez à mon HUMBLE avis remplacer le pont par un vrai pilote et la base de données héritée par un vrai dès que possible
  • Si elle est-ce que le code de test qui interagit avec une base de données Access, une feuille de calcul Excel ou tout ce que vous pouvez accéder via ODBC, essayez de le remplacer par une base de données Java pure comme H2
  • Si vous l'utilisez pour un accès ad hoc à des bases de données d'accès héritées, par exemple, à des fins de développement et/ou d'analyse, et que vous ne pouvez vraiment pas ou ne voulez pas mettre à jour quoi que ce soit, vous pouvez vous en tenir à un JDK 7 pendant un certain temps jusqu'à sa date]}
 15
Author: Robert Petermeier, 2013-01-13 16:24:51

Existe-t-il une autre solution reliant le pont JDBC-ODBC?

Les positions officielles de Sun et Oracle ont longtemps été que {

Le pont [JVM-bundled] JDBC-ODBC devrait être considéré comme une solution transitoire [...] Oracle ne prend pas en charge le pont JDBC-ODBC.

Cependant, mon employeur, OpenLink Software , a produit des ponts commerciaux de type 1 de niveau entreprise entre JDBC et ODBC depuis JVM 1.0, et ceux-ci sont entièrement compatible avec la JVM 1.8 actuelle. Vous pouvez en savoir plus ici {

 11
Author: TallTed, 2015-04-08 19:38:22

J'ai trouvé une solution raisonnable qui permet d'utiliser du code existant avec une modification uniquement pour ouvrir la logique de connexion à la base de données.

UCanAccess est un pilote JDBC open-source.

Http://ucanaccess.sourceforge.net/site.html

Qui a deux dépendances, dont l'une a deux autres dépendances.

Jackcess-2.0.0.jar ou plus tard

commons-lang-2.4.jar

commons-logging-1.0.4.jar

Hsqldb.jar(2.2.5)

Ceux-ci sont tous open-source. Faites une recherche sur Internet, téléchargez, décompressez si nécessaire et mettez les quatre fichiers jar plus celui pour UCanAccess dans un répertoire de votre projet (par exemple JDBC-to-MSAccess). Si vous utilisez Ecplise, ajoutez à votre chemin de construction en choisissant dans le menu "Projet / Propriétés / Compilateur Java / Bibliothèques / Ajouter des fichiers JAR externes" et sélectionnez les cinq fichiers jar.

La logique de connexion est vraiment simple:


String strConnectionString = "";
Connection conAdministrator = null;

// Register driver
Class.forName( "net.ucanaccess.jdbc.UcanaccessDriver" );

// System.getProperty( "user.dir" ) => Current working directory from where application was started

strConnectionString = "jdbc:ucanaccess://" + System.getProperty( "user.dir" )  + "\\Your-database-name.<mdb or accdb>";

// Open a connection to the database
conAdministrator = DriverManager.getConnection( strConnectionString );
 10
Author: Outlier, 2015-03-27 20:33:40

Robert Petermeier a donné un bon point H2 drives prend en charge ODBC via le pilote PostgreSQL, et vous pouvez installer le pilote en conséquence le lien de Stackoverflow Configuration de PostgreSQL ODBC sous Windows

 0
Author: Singagirl, 2017-05-23 11:54:53

Je sais que cette question a été répondue il y a longtemps, mais je voulais mettre en évidence le lien sequelink de DataDirect. Dans ce blog https://www.progress.com/blogs/jdbc-odbc-bridge-replacement-yields-performance-boost l'auteur parle de la façon dont leur pont peut donner un gain de performance de 310%. La version d'essai du bridge peut être téléchargée ici: https://www.progress.com/jdbc/sequelink

 0
Author: user6641561, 2017-04-30 23:17:20