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 Access ODBC de Microsoft parce que:
J'ai vu d'autres réponses mentionnant un pilote JDBC pour les bases de données Access nommé CanAccess . Comment puis-je configurer mon projet Java pour utiliser cette approche?
(Des réponses suggérant de meilleures méthodes de travail avec les bases de données Access de Java seraient également les bienvenues.)
CanAccess est un pilote JDBC pur Java qui 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.
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:
<dependencies>
<dependency>
<groupId>net.sf.ucanaccess</groupId>
<artifactId>ucanaccess</artifactId>
<version>4.0.4</version>
</dependency>
</dependencies>
Comme mentionné ci-dessus, UCanAccess requiert Jackcess et HSQLDB. Jackcess à son tour a ses propres dépendances . Donc, pour utiliser UCanAccess, vous devez inclure les composants suivants:
CanAccess (ucanaccess-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 plus récent version 1.x )
Heureusement, UCanAccess inclut tous les fichiers JAR requis dans son fichier de distribution. Lorsque vous 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 avez à faire est d’ajouter tous cinq (5) JAR à votre projet.
REMARQUE: Ne pas ajoutez
loader/ucanload.jar
à votre chemin de construction si vous ajoutez les cinq (5) autres fichiers JAR. La classeUcanloadDriver
n'est utilisée que dans des circonstances spéciales et nécessite une configuration différente. Voir la réponse associée ici pour plus de détails.
Eclipse: Cliquez avec le bouton droit de la souris sur le projet dans l'Explorateur de packages et choisissez Build Path > Configure Build Path...
. Cliquez sur le bouton "Ajouter des JAR externes ..." pour ajouter chacun des cinq (5) JAR. Lorsque vous avez terminé votre chemin de construction Java devrait ressembler à ceci:
NetBeans: Développez l’arborescence de votre projet, cliquez avec le bouton droit sur le dossier "Bibliothèques" et choisissez "Ajouter un fichier JAR/dossier ...", puis sélectionnez Parcourir. dans 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:
Maintenant, "U peut accéder" aux données des fichiers .accdb et .mdb en utilisant un code comme celui-ci
// 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));
}
Au moment de la rédaction de ce Q & R, je n’étais impliqué ni affilié au projet UCanAccess; Je viens de l'utiliser. Je suis depuis devenu un contributeur au projet.