Je souhaite manipuler une base de données Microsoft Access (fichier .accdb ou .mdb) à partir de mon projet Java. Je ne souhaite pas utiliser le pont JDBC-ODBC et le pilote ODBC Access de Microsoft car:
- le JDBC-ODBC Bridge a été supprimé de Java SE 8 et n'est pas pris en charge (réf: ici ),
- le pont JDBC-ODBC ne fonctionne pas correctement avec le pilote ODBC Access lorsque le texte comprend des caractères Unicode avec des points de code au-dessus de U + 00FF (réf: ici ), donc une telle configuration ne serait pas capable de gérer des caractères tels que le grec, le russe, le chinois , 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) qui peuvent être une gêne 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.)
java
ms-access
ucanaccess
Gord Thompson
la source
la source
Réponses:
UCanAccess est un pilote JDBC Java pur qui nous permet de lire et d'écrire dans des bases de données Access sans utiliser ODBC. Il utilise deux autres packages, Jackcess et HSQLDB , pour effectuer ces tâches. Ce qui suit est un bref aperçu de la façon de le configurer.
Option 1: Utilisation de Maven
Si votre projet utilise Maven, vous pouvez simplement inclure UCanAccess via les coordonnées suivantes:
groupId: net.sf.ucanaccess
artifactId: ucanaccess
Ce qui suit est un extrait de
pom.xml
, vous devrez peut-être mettre à jour le<version>
pour obtenir la version la plus récente:Option 2: ajouter manuellement les JAR à votre projet
Comme mentionné ci-dessus, UCanAccess nécessite Jackcess et HSQLDB. Jackcess a à son tour ses propres dépendances . Donc, pour utiliser UCanAccess, vous devrez inclure les composants suivants:
UCanAccess (ucanaccess-xxxjar)
HSQLDB (hsqldb.jar, version 2.2.5 ou plus récente)
Jackcess (jackcess-2.xxjar)
commons-lang (commons-lang-2.6.jar, ou version plus récente 2.x )
commons-logging ( commons-logging-1.1.1.jar ou version 1.x plus récente )
Heureusement, UCanAccess inclut tous les fichiers JAR requis dans son fichier de distribution. Lorsque vous le décompressez, vous verrez quelque chose comme
Tout ce que vous avez à faire est d'ajouter les cinq (5) JAR à votre projet.
Eclipse: cliquez avec le bouton droit sur le projet dans l'Explorateur de packages et choisissez
Build Path > Configure Build Path...
. Cliquez sur le bouton "Ajouter des fichiers JAR externes ..." pour ajouter chacun des cinq (5) fichiers JAR. Lorsque vous avez terminé, votre chemin de construction Java devrait ressembler à ceciNetBeans: Développez l'arborescence de votre projet, cliquez avec le bouton droit sur le dossier "Bibliothèques" et choisissez "Ajouter JAR / Dossier ...", puis recherchez le fichier JAR.
Après avoir ajouté les cinq (5) fichiers JAR, le dossier "Libraries" devrait ressembler à ceci:
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 cela est fait, le projet devrait ressembler à ceci:C'est tout!
Maintenant les données "U Can Access" dans les fichiers .accdb et .mdb en utilisant un code comme celui-ci
Divulgation
Au moment de la rédaction de ce Q&R, je n'avais aucune implication ou affiliation avec le projet UCanAccess; Je viens de l'utiliser. Je suis depuis devenu un contributeur au projet.
la source
net.ucanaccess.jdbc.UcanaccessDriver