Minecraft SQLite JDBC

⭐ — (18 endorsements) 📥 21,537 downloads 📌 v3.53.2.0+2026-06-06 📅 4/22/2025
🟡 Updated this year

By Axionize · bukkit

⬇ Download Mod Source: Modrinth ↗ 📅 Updated: 6/6/2026 📅 Created: 4/22/2025
⚠️ Install Order · 2 steps
1🛠️ Forge — Minecraft Forge (mod loader) Download ↗
2🛠️ Fabric — Fabric Loader Download ↗

Install in this order, then this mod last — most mods fail to load without their framework and dependencies in place.

🔍 Analysis

  • 👍 0.1% endorsement rate
  • 🏆 #20 of 25 bukkit mods in this game by downloads

📋 About This Mod

# SQLite JDBC for Minecraft A maintained fork of the dormant SQLite JDBC for Minecraft mod, now tracking the **latest (https://github.com/xerial/sqlite-jdbc) release** with auto-bumps whenever upstream cuts a new version. The mod does nothing on its own — it ships the SQLite JDBC driver onto the server's classpath so other plugins/mods that want to read or write `.db`/`.sqlite` files via JDBC don't each have to bundle their own copy. Typical consumers: (https://www.curseforge.com/minecraft/mc-mods/dynmap), (https://github.com/plan-player-analytics/Plan), (https://luckperms.net/), (https://github.com/GrimAnticheat/Grim), and any plugin that wants embedded SQLite without redistributing 10MB of native binaries themselves. ## What's in the jar `org.xerial:sqlite-jdbc:3.53.0.0` plus minimal loader stubs for Spigot, Forge 1.12, Forge 1.13–1.16, Forge 1.17–1.20, NeoForge 1.21+, and Fabric. The driver classes stay at their canonical `org.sqlite.*` paths — no relocation — so consumers find them with plain `Class.forName("org.sqlite.JDBC")`. `META-INF/services/java.sql.Driver` is preserved so the driver auto-registers with `DriverManager`. The xerial driver bundles native SQLite binaries for every common platform/architecture (linux x64/aarch64, macos x64/arm64, windows x64). They get extracted to the JVM's tempdir on first use. ## Compatibility | Loader | MC versions | Notes | |---|---|---| | Bukkit / Spigot / Paper / Folia / Purpur | 1.8 → current | drop into `plugins/` | | Fabric | 1.16.1 → current | needs Fabric Loader 0.14+ | | Forge | 1.12 → 1.20 | universal jar, no Mixins | | NeoForge | 1.21 → current | drop into `mods/` | Java 8+ required. Plain BukkitAPI servers without Java 8 (anything older than ~1.8.8) won't be able to load any modern xerial release; that's an upstream constraint, not this mod. ### When you actually need this mod CraftBukkit/Spigot/Paper have shipped `sqlite-jdbc` on the server's parent classloader since the 1.4-era ebeans commit. Plugin classloaders delegate parent-first, so for the **default JDBC path** (`Class.forName("org.sqlite.JDBC")` / `DriverManager.getConnection`) the bundled driver always wins, regardless of what's in `plugins/`. Tested empirically on Paper 1.12.2 and 1.21.11. You need this mod when: - You're on **Fabric** or **NeoForge** — vanilla Minecraft ships no JDBC drivers at all - You're on a **Bukkit fork that's stripped the bundled driver** (rare, but happens on minified server builds) - You want a **newer SQLite engine version than your server bundles** — for `RETURNING`, `STRICT` tables, modern UPSERT on a 1.8–1.12 server, or just to track the latest Xerial release. See (#using-a-newer-engine-via-the-public-api) below. ### Using a newer engine via the public API The default path uses the bundled driver. To use *this* mod's driver instead, your plugin softdepends on this holder and calls `MinecraftSqliteJdbc.connect(url)` directly: ```java // in your plugin.yml softdepend: ``` ```java // in your plugin code Connection c; try { c = MinecraftSqliteJdbc.connect("jdbc:sqlite:foo.db"); } catch (NoClassDefFoundError | ClassNotFoundException notInstalled) { // holder isn't installed — fall back to the bundled driver c = DriverManager.getConnection("jdbc:sqlite:foo.db"); } ``` `MinecraftSqliteJdbc` wraps a child-first `URLClassLoader` pointing at this jar's URL, parented to the platform classloader so `org.sqlite.*` must come from this jar (not the bundled chain). The returned `Connection` is a standard `java.sql.Connection` — keep your casts to `java.sql.*` interfaces; the impl class `org.sqlite.SQLiteConnection` lives in the child-first classloader and won't down-cast across the boundary. Verified on Paper 1.12.2 (bundled engine 3.21.0) — same JVM, same boot: ``` baseline DriverManager.getConnection → engine 3.21.0 MinecraftSqliteJdbc.connect() → engine 3.53.0 ``` API surface (all static): | Method | Returns | |---|---| | `connect(String url)` | open `Connection` through this driver | | `connect(String url, Properties props)` | as above with props | | `driver()` | the `java.sql.Driver` instance | | `engineVersion()` | SQLite engine version (e.g. `"3.53.0"`) | | `driverVersion()` | driver version string (e.g. `"3.53.0.0"`) | | `eagerInit()` | warm the classloader at plugin enable | | `shutdown()` | release file handles + JNI on plugin disable | Grim Anti-Cheat's SQLite backend uses this API automatically when this holder is installed and ships a newer engine than the bundled one — see Grim's (https://github.com/GrimAnticheat/Grim/wiki/Database#using-a-newer-sqlite-engine-on-a-bukkit-family-server). ### Bundled SQLite engine versions on common Bukkit lines For reference if you're wondering what engine version your server actually ships: | CraftBukkit / Paper line | Bundled SQLite engine | |---|---

# SQLite JDBC for Minecraft

A maintained fork of the dormant SQLite JDBC for Minecraft mod, now tracking the latest (https://github.com/xerial/sqlite-jdbc) release with auto-bumps whenever upstream cuts a new version.

The mod does nothing on its own — it ships the SQLite JDBC driver onto the server's classpath so other plugins/mods that want to read or write `.db`/`.sqlite` files via JDBC don't each have to bundle their own copy.

Typical consumers: (https://www.curseforge.com/minecraft/mc-mods/dynmap), (https://github.com/plan-player-analytics/Plan), (https://luckperms.net/), (https://github.com/GrimAnticheat/Grim), and any plugin that wants embedded SQLite without redistributing 10MB of native binaries themselves.

## What's in the jar

`org.xerial:sqlite-jdbc:3. 53. 0. 0` plus minimal loader stubs for Spigot, Forge 1. 12, Forge 1. 13–1. 16, Forge 1. 17–1. 20, NeoForge 1. 21+, and Fabric. The driver classes stay at their canonical `org.sqlite.` paths — no relocation — so consumers find them with plain `Class.forName("org.sqlite. JDBC")`. `META-INF/services/java.sql. Driver` is preserved so the driver auto-registers with `DriverManager`.

The xerial driver bundles native SQLite binaries for every common platform/architecture (linux x64/aarch64, macos x64/arm64, windows x64). They get extracted to the JVM's tempdir on first use.

## Compatibility

| Loader | MC versions | Notes | |---|---|---| | Bukkit / Spigot / Paper / Folia / Purpur | 1. 8 → current | drop into `plugins/` | | Fabric | 1. 16. 1 → current | needs Fabric Loader 0. 14+ | | Forge | 1. 12 → 1. 20 | universal jar, no Mixins | | NeoForge | 1. 21 → current | drop into `mods/` |

Java 8+ required. Plain BukkitAPI servers without Java 8 (anything older than ~1. 8. 8) won't be able to load any modern xerial release; that's an upstream constraint, not this mod.

### When you actually need this mod

CraftBukkit/Spigot/Paper have shipped `sqlite-jdbc` on the server's parent classloader since the 1. 4-era ebeans commit. Plugin classloaders delegate parent-first, so for the default JDBC path (`Class.forName("org.sqlite. JDBC")` / `DriverManager.getConnection`) the bundled driver always wins, regardless of what's in `plugins/`. Tested empirically on Paper 1. 12. 2 and 1. 21. 11.

You need this mod when:

  • You're on Fabric or NeoForge — vanilla Minecraft ships no JDBC drivers at all
  • You're on a Bukkit fork that's stripped the bundled driver (rare, but happens on minified server builds)
  • You want a newer SQLite engine version than your server bundles — for `RETURNING`, `STRICT` tables, modern UPSERT on a 1. 8–1. 12 server, or just to track the latest Xerial release. See (#using-a-newer-engine-via-the-public-api) below.

### Using a newer engine via the public API

The default path uses the bundled driver. To use this mod's driver instead, your plugin softdepends on this holder and calls `MinecraftSqliteJdbc.connect(url)` directly:

```java // in your plugin.yml softdepend: ```

```java // in your plugin code Connection c; try { c = MinecraftSqliteJdbc.connect("jdbc:sqlite:foo.db"); } catch (NoClassDefFoundError | ClassNotFoundException notInstalled) { // holder isn't installed — fall back to the bundled driver c = DriverManager.getConnection("jdbc:sqlite:foo.db"); } ```

`MinecraftSqliteJdbc` wraps a child-first `URLClassLoader` pointing at this jar's URL, parented to the platform classloader so `org.sqlite.` must come from this jar (not the bundled chain). The returned `Connection` is a standard `java.sql. Connection` — keep your casts to `java.sql.*` interfaces; the impl class `org.sqlite. SQLiteConnection` lives in the child-first classloader and won't down-cast across the boundary.

Verified on Paper 1. 12. 2 (bundled engine 3. 21. 0) — same JVM, same boot:

``` baseline DriverManager.getConnection → engine 3. 21. 0 MinecraftSqliteJdbc.connect() → engine 3. 53. 0 ```

API surface (all static):

| Method | Returns | |---|---| | `connect(String url)` | open `Connection` through this driver | | `connect(String url, Properties props)` | as above with props | | `driver()` | the `java.sql. Driver` instance | | `engineVersion()` | SQLite engine version (e.g. `"3. 53. 0"`) | | `driverVersion()` | driver version string (e.g. `"3. 53. 0. 0"`) | | `eagerInit()` | warm the classloader at plugin enable | | `shutdown()` | release file handles + JNI on plugin disable |

Grim Anti-Cheat's SQLite backend uses this API automatically when this holder is installed and ships a newer engine than the bundled one — see Grim's (https://github.com/GrimAnticheat/Grim/wiki/Database#using-a-newer-sqlite-engine-on-a-bukkit-family-server).

### Bundled SQLite engine versions on common Bukkit lines

For reference if you're wondering what engine version your server actually ships:

| CraftBukkit / Paper line | Bundled SQLite engine | |---|---

🤖 AI-enhanced — based on mod data

📊 Mod Details

Game
Minecraft Mods
Author
Axionize
Version
3.53.2.0+2026-06-06
Downloads
21,537
Endorsements
18
Category
bukkit
Created
4/22/2025
Updated
6/6/2026
Game Versions
1.12.2, 1.13, 1.13.1, 1.13.2, 1.14
Tags
library, optimization, utility

🔧 How to Install Minecraft Mods Mods

Download from Modrinth. Use Prism Launcher or drop into your mods folder.

📖 Full step-by-step install guide for Minecraft Mods →

Visit the official mod page for specific installation instructions for this mod.

🎮 Need cheat codes or console commands? Check ur gaming wiki for Minecraft Mods commands, item IDs, and more.

❓ Frequently Asked Questions

Which Minecraft Mods versions does Minecraft SQLite JDBC support?

The author lists 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1. Other versions may work but are untested by the author.

What is the latest version of Minecraft SQLite JDBC?

Version 3.53.2.0+2026-06-06, published 2026-06-06 with 21,537 downloads recorded at the source.

Keep browsing — more Minecraft Mods mods await

📋 All Minecraft Mods Mods 🏆 Top 25 📂 More bukkit 👤 More by Axionize 🔎 Similar Mods 🌐 Best bukkit (All Games) 🔀 Check Compatibility ⚖️ Compare Mods 🆕 New Mods