https://github.com/spannm/ucanaccess
Open-source pure Java JDBC driver for Microsoft Access databases. Allows Java developers and client programs (e.g. OpenOffice, LibreOffice, SQuirreL) to read and write various versions of Access databases.
https://github.com/spannm/ucanaccess
access driver jdbc microsoft msaccess purejava sql
Last synced: 2 months ago
JSON representation
Open-source pure Java JDBC driver for Microsoft Access databases. Allows Java developers and client programs (e.g. OpenOffice, LibreOffice, SQuirreL) to read and write various versions of Access databases.
- Host: GitHub
- URL: https://github.com/spannm/ucanaccess
- Owner: spannm
- License: apache-2.0
- Created: 2023-09-05T10:57:17.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-12-31T14:03:10.000Z (3 months ago)
- Last Synced: 2026-01-03T08:24:49.127Z (3 months ago)
- Topics: access, driver, jdbc, microsoft, msaccess, purejava, sql
- Language: Java
- Homepage: https://spannm.github.io/ucanaccess/
- Size: 6.48 MB
- Stars: 61
- Watchers: 7
- Forks: 9
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
**UCanAccess** is a high-performance, open-source Java JDBC driver that gives you seamless access to Microsoft Access databases (`.mdb` and `.accdb`) without needing any native Windows libraries (R-I-P `OdbcJdbcBridge` ðŠĶ).
Whether you are building a modern Spring Boot application or using classic tools like LibreOffice or SQuirreL SQL, UCanAccess provides a reliable, pure-Java way to read and write your data.
ââââââââââââââââââââ
## âĻ 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.1.2** 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 like `PMT` or `PV`).
* **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 and tested).
* **Build Tool**: [Maven](https://maven.apache.org/)
* **Main Dependencies**:
* [Jackcess](https://github.com/spannm/jackcess/)
* [HyperSQL Database (HSQLDB)](http://hsqldb.org/)
Â
## ðĶ Installation
To use UCanAccess in your project, add the following dependency.
### Maven (`pom.xml`)
```xml
io.github.spannm
ucanaccess
5.1.5
```
### Gradle (Groovy / `build.gradle`)
```groovy
implementation 'io.github.spannm:ucanaccess:5.1.5'
```
### Gradle (Kotlin DSL / `build.gradle.kts`)
```kotlin
implementation("io.github.spannm:ucanaccess:5.1.5")
```
Â
## ðĶ Quick Start
Connecting to your database is as simple as:
```java
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
}
```
Â
## âĪïļ Why this Fork?
The original project (developed by Marco Amadei and Gord Thompson) was the gold standard for Access connectivity but went quiet in 2020.
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.
Â
## ðĪ Contributions welcome!
Got a bug to fix or a feature to add?
1. Check out the [Issues](https://github.com/spannm/ucanaccess/issues)
2. [Fork](https://github.com/spannm/ucanaccess/fork) the Repo
3. Submit a [Pull Request](https://github.com/spannm/ucanaccess/pulls)
*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.