116 votes

Manipuler une base de données Access à partir de Java sans ODBC

Je veux manipuler une base de données Microsoft Access (fichier .accdb ou .mdb) à partir de mon projet Java. Je ne veux pas utiliser le pont JDBC-ODBC et le pilote ODBC d'Access de Microsoft car :

  • le pont JDBC-ODBC a été supprimé de Java SE 8 et n'est pas pris en charge (réf : aquí ),
  • le pont JDBC-ODBC ne fonctionne pas correctement avec le pilote Access ODBC lorsque le texte comprend des caractères Unicode avec des points de code supérieurs à U+00FF (réf : aquí ), donc une telle configuration ne serait pas en mesure de gérer des caractères tels que le grec, le russe, le chinois, l'arabe, etc,
  • le pilote ODBC Access de Microsoft ne fonctionne que sous Windows, et
  • il existe des versions 32 bits et 64 bits distinctes du moteur de base de données Access (et du pilote ODBC), ce qui peut être gênant pour le déploiement.

J'ai vu d'autres réponses mentionnant un pilote JDBC pour les bases de données Access nommé UCanAccess . Comment puis-je configurer mon projet Java pour utiliser cette approche ?

(Les réponses suggérant de meilleures façons de travailler avec les bases de données Access à partir de Java seraient également les bienvenues).

0 votes

Gord, j'aimerais entrer en contact avec vous. Une adresse électronique, c'est possible ? Salutations

0 votes

Vous pouvez utiliser les classes odbc jdbc de jre7 également dans jre8 - voir stackoverflow.com/a/34617075/2110961

164voto

Gord Thompson Points 30178

UCanAccess est un pilote JDBC purement Java qui nous permet de lire et d'écrire dans les bases de données Access sans utiliser ODBC. Il utilise deux autres paquets, Jackcess y HSQLDB pour effectuer ces tâches. Voici un bref aperçu de la manière de le configurer.

Option 1 : Utiliser Maven

Si votre projet utilise Maven vous pouvez simplement inclure UCanAccess via les coordonnées suivantes :

groupId : net.sf.ucanaccess
artefactId : ucanaccess

Le texte suivant est un extrait de pom.xml vous devrez peut-être mettre à jour le <version> pour obtenir la version la plus récente :

  <dependencies>
    <dependency>
        <groupId>net.sf.ucanaccess</groupId>
        <artifactId>ucanaccess</artifactId>
        <version>4.0.4</version>
    </dependency>
  </dependencies>

Option 2 : Ajouter manuellement les JARs à votre projet

Comme mentionné ci-dessus, UCanAccess nécessite Jackcess et HSQLDB. Jackcess possède à son tour ses propres Dépendances . Ainsi, pour utiliser UCanAccess, vous devrez inclure les composants suivants :

UCanAccess (ucanaccess-x.x.x.x.jar)
HSQLDB (hsqldb.jar, version 2.2.5 ou plus récente)
Jackcess (jackcess-2.x.x.jar)
commons-lang (commons-lang-2.6.jar, ou plus récent) Version 2.x )
commons-logging (commons-logging-1.1.1.jar, ou une version plus récente Version 1.x )

Heureusement, UCanAccess inclut tous les fichiers JAR nécessaires dans son fichier de distribution. Lorsque vous le décompressez, vous verrez quelque chose comme

ucanaccess-4.0.1.jar  
  /lib/
    commons-lang-2.6.jar  
    commons-logging-1.1.1.jar  
    hsqldb.jar  
    jackcess-2.1.6.jar

Tout ce que vous devez faire, c'est ajouter tous les cinq (5) JARs à votre projet.

NOTE : Ne pas no ajouter loader/ucanload.jar à votre chemin de construction si vous ajoutez les cinq (5) autres fichiers JAR. Le site UcanloadDriver n'est utilisée que dans des circonstances particulières et nécessite une configuration différente. Voir la réponse correspondante aquí pour les détails.

Eclipse : Cliquez à droite sur le projet dans Package Explorer et choisissez Build Path > Configure Build Path... . Cliquez sur le bouton "Add External JARs..." pour ajouter chacun des cinq (5) JARs. Lorsque vous avez terminé, votre chemin de construction Java devrait ressembler à ceci

BuildPath.png

NetBeans : Développez l'arborescence de votre projet, faites un clic droit sur le dossier "Libraries" et choisissez "Add JAR/Folder...", puis naviguez jusqu'au fichier JAR.

nbAddJar.png

Après avoir ajouté les cinq (5) fichiers JAR, le dossier "Libraries" devrait ressembler à ceci :

nbLibraries.png

IntelliJ IDEA : Choisissez File > Project Structure... dans le menu principal. Dans le volet "Bibliothèques", cliquez sur le bouton "Ajouter" ( + ) et ajoutez les cinq (5) fichiers JAR. Une fois que c'est fait, le projet devrait ressembler à quelque chose comme ceci :

IntelliJ.png

C'est ça !

Maintenant, vous pouvez accéder aux données dans les fichiers .accdb et .mdb en utilisant le code suivant

// assumes...
//     import java.sql.*;
Connection conn=DriverManager.getConnection(
        "jdbc:ucanaccess://C:/__tmp/test/zzz.accdb");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT [LastName] FROM [Clients]");
while (rs.next()) {
    System.out.println(rs.getString(1));
}

Divulgation

Au moment où j'ai rédigé ces questions et réponses, je n'étais pas impliqué dans le projet UCanAccess et n'y étais pas affilié ; je l'ai simplement utilisé. Depuis, je suis devenu un contributeur au projet.

2 votes

Avez-vous une quelconque affiliation avec cette bibliothèque ? Si c'est le cas, cela peut valoir la peine de le dire.

0 votes

Pouvez-vous l'utiliser pour vous connecter à un classeur Excel (.xlsx) en Java 8 ?

0 votes

@steinbitur Non, vous devez utiliser quelque chose comme POI Apache pour ça.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X