spannm/ucanaccess
spannm/ucanaccess has 107 GitHub stars and 13 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-11 15:05 UTC. Last push 2026-11-02.
Comment ces chiffres sont mesurés
Open-source pure Java JDBC driver for Microsoft Access databases (*.accdb, *.mdb). Enables client programs (e.g. OpenOffice, LibreOffice, Matlab, SQuirreL) to read and write Access databases.
What you can do
- Pure Java Power: Zero native dependencies. Runs anywhere Java 11+ is supported.
- Drop-in Replacement: Fully compatible with previous UCanAccess versions.
- Modern Core: Built on top of the latest Jackcess 5.2.0 and HSQLDB 2.7.4 for maximum stability and security.
- Comprehensive SQL Support: Supports SELECT, INSERT, UPDATE, DELETE, and even complex DDL operations like ALTER TABLE.
Progression mesurée des étoiles
- in 24h
- 0
- in 7 days
- Mise à jour retardée
- in 15 days
- Mise à jour retardée
- in 1 month
- Mise à jour retardée
Variations nettes sur des périodes qui se chevauchent, pas des totaux quotidiens. Les mesures absentes restent vides. Les étoiles indiquent l’intérêt, pas la qualité.
README.md
OriginalUCanAccess
The modern bridge between Java and Microsoft Access
UCanAccess is a open-source pure-Java JDBC driver that gives you seamless access to Microsoft Access databases (.mdb, .accdb) without needing any native Windows libraries - R.I.P. OdbcJdbcBridge 🪦.
New to UCanAccess? Check out the introduction guide on Foojay.io: UCanAccess – Java MS Access JDBC Guide
✨ Key Features
Pure Java Power: Zero native dependencies. Runs anywhere Java 11+ is supported.
Drop-in Replacement: Fully compatible with previous UCanAccess versions.
Modern Core: Built on top of the latest Jackcess 5.2.0 and HSQLDB 2.7.4 for maximum stability and security.
Comprehensive SQL Support: Supports SELECT, INSERT, UPDATE, DELETE, and even complex DDL operations like
ALTER TABLE.Access-like Logic: Includes built-in Access functions (like
IIf,Nz, and financial functions likePMTorPV).Security Conscious: Regularly updated to be free of known CVEs.
🛠 Tech Stack & Requirements
Java Version: 11 or higher (LTS versions like Java 17 and 21 are fully supported, the tests run on Java 11, 17 and 21).
Build Tool: Maven
Main Dependencies:
Jackcess Encrypt (optional, for encrypted databases)
📦 Installation
To use UCanAccess in your project, add the following dependency.
Maven (pom.xml)
<dependency>
<groupId>io.github.spannm</groupId>
<artifactId>ucanaccess</artifactId>
<version>5.2.0</version>
</dependency>
Gradle (Groovy / build.gradle)
implementation 'io.github.spannm:ucanaccess:5.2.0'
Gradle (Kotlin DSL / build.gradle.kts)
implementation("io.github.spannm:ucanaccess:5.2.0")
🔁 Migrating from net.sf.ucanaccess
Still on the original net.sf.ucanaccess:ucanaccess artifact? That project has had no release since 2020 and no longer receives security or compatibility updates. Development of UCanAccess continues here. For most projects, switching is a drop-in change: the JDBC driver class and connection URL stay the same, just update your dependency coordinates:
- <groupId>net.sf.ucanaccess</groupId>
+ <groupId>io.github.spannm</groupId>
<artifactId>ucanaccess</artifactId>
- <version>5.0.1</version>
+ <version>5.2.0</version>
If you pass your own class with the jackcessOpener connection property, adapt it as well:
- implement
net.ucanaccess.jdbc.IJackcessOpenerInterfaceinstead ofJackcessOpenerInterface - Jackcess is now
io.github.spannm:jackcesswith the packageio.github.spannm.jackcessinstead ofcom.healthmarketscience.jackcess DatabaseBuilderuses fluentwith...methods, e.g.withReadOnly(true)instead ofsetReadOnly(true)
If another dependency still pulls in net.sf.ucanaccess:ucanaccess, exclude it there. Both artifacts contain the same classes, and whichever comes first on the classpath wins:
<exclusions>
<exclusion>
<groupId>net.sf.ucanaccess</groupId>
<artifactId>ucanaccess</artifactId>
</exclusion>
</exclusions>
You get current Jackcess/HSQLDB versions (with their CVE fixes), tested Java 11/17/21 support on Linux and Windows, and active maintenance — with the same JDBC driver class and connection URL you already use.
🚦 Quick Start
Connecting to your database is as simple as:
import java.sql.Connection;
import java.sql.DriverManager;
String url = "jdbc:ucanaccess://C:/path/to/your/database.accdb";
try (Connection conn = DriverManager.getConnection(url)) {
// your code here
}
🔗 Linked Tables & Untrusted Databases
If the .accdb/.mdb file you open contains linked tables, UCanAccess automatically opens the linked database files
so those tables can be read. Local linked paths are resolved as before, but a linked table pointing to a
network/UNC path (e.g. \\server\share\linked.accdb) is rejected by default with an AccessDeniedException —
such a path is taken verbatim from the database file, so a database from an untrusted source could otherwise make
your JVM reach out to an arbitrary host as soon as the linked table is touched.
If you trust the linked network paths in a given database, opt back in explicitly via the allowRemoteLinks
connection property:
String url = "jdbc:ucanaccess://C:/path/to/your/database.accdb;allowRemoteLinks=true";
Why a New Home?
The original project (developed by Marco Amadei and Gord Thompson) was the gold standard for Access connectivity but went quiet in 2020, leaving net.sf.ucanaccess:ucanaccess unmaintained at version 5.0.1.
As a long-time contributor and Java enthusiast, I decided to give UCanAccess a new home.
My goal is to keep this essential tool alive, maintain a high test coverage (JUnit 5), and ensure it meets modern Clean Code and SOLID standards. If you maintain a project that still depends on net.sf.ucanaccess, see Migrating from net.sf.ucanaccess above — a PR bumping the dependency is very welcome.
🤝 Contributions welcome!
Got a bug to fix or a feature to add?
- Check out the Issues
- Fork the Repo
- Submit a Pull Request
Note: Please ensure your code follows the project's quality standards (Checkstyle, PMD are enforced in the build).
⚖️ License
UCanAccess is licensed under the Apache License, Version 2.0.
|
Enjoying UCanAccess? Please leave a 🌟 to support the project! Your stars help to keep the bridge between Java and Access alive and visible. |
Explorer des projets similaires
Asabeneh/30-Days-Of-Python
Le défi de programmation 30 Days of Python est un guide pas à pas pour apprendre le langage de programmation Python en 30 jours. Ce défi peut prendre plus de 100 jours. Avancez à votre rythme. Ces vidéos peuvent aussi vous aider : https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,560 étoilesgrafana/grafana
Plateforme ouverte et composable d’observabilité et de visualisation de données. Visualise les métriques, les journaux et les traces issus de plusieurs sources, comme Prometheus, Loki, Elasticsearch, InfluxDB, Postgres et bien d’autres.
77,830 étoilesredis/redis
Pour les développeurs qui créent des applications en temps réel pilotées par les données, Redis est le cache, le serveur de structures de données et le moteur de requêtes documentaires et vectorielles préféré, le plus rapide et le plus riche en fonctionnalités.
77,395 étoilesapache/superset
Apache Superset est une plateforme de visualisation et d'exploration de données.
75,473 étoiles