An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          




Maven Central Version

Maven Central Last Update

GitHub Actions Workflow Status


GitHub Actions Workflow Status


GitHub Repo stars

UCanAccess


The modern bridge between Java and Microsoft Access

**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.