Minecraft SQLite JDBC

Minecraft SQLite JDBC

Up-to-date SQLite JDBC driver wrapped as a universal Forge/Fabric/Bukkit library for plugins like Dynmap and Grim.

by
16.3K Downloads
bukkitfabricfoliaforgeneoforgepaperpurpurquiltspigotlibraryoptimizationutility
Rent Server with this Mod

Screenshots

Minecraft SQLite JDBC Screenshot 1

About this Mod

SQLite JDBC for Minecraft

A maintained fork of the dormant SQLite JDBC for Minecraft mod, now tracking the latest 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: Dynmap, Plan, LuckPerms, Grim Anti-Cheat, 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:

// in your plugin.yml
softdepend: [sqlite-jdbc]
// 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 Database wiki page.

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
1.8 – 1.10 3.7.2
1.11 3.16.1
1.12 3.21.0.1
1.13 3.25.2
1.14 3.28.0
1.15 3.30.1
1.16 – 1.17 3.34.0
1.20.6 3.45.3.0
Paper 1.21.4 3.47.0.0
Paper 1.21.5 – 1.21.11 3.49.1.0
master / 26.x 3.51.3.0

This mod ships engine 3.53.0.0 (or whatever the latest xerial release is), but none of that matters on Bukkit-family servers — the bundled engine is what actually runs your queries. If you need a newer engine for features like RETURNING (3.35+) or STRICT tables (3.37+), upgrade to a Paper version that bundles a recent enough driver, or move that workload to Fabric/NeoForge where you can control the driver.

Using it from a plugin or mod

Declare sqlite-jdbc as compileOnly:

compileOnly("org.xerial:sqlite-jdbc:3.53.0.0")

Probe at startup:

try {
    Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException e) {
    getLogger().warning("SQLite backend disabled — install minecraft-sqlite-jdbc");
    return;
}
try (Connection c = DriverManager.getConnection("jdbc:sqlite:" + dataDir.resolve("data.db"))) {
    // ...
}

On Paper 1.17+ each plugin's classloader is isolated. Add this mod to your plugin.yml softdepend so the driver classes are visible to your plugin:

softdepend: [minecraft-sqlite-jdbc]

Fabric and NeoForge unify all mods on one classloader, so no equivalent declaration is needed there.

Versioning

The jar version tracks Xerial's sqlite-jdbc release one-to-one. 3.53.0.0+2026-04-14 ships engine 3.53.0.0; the suffix is the build date. A scheduled GitHub Action checks Maven Central daily — when xerial cuts a new release, an auto-merge PR opens here and the Modrinth release goes out automatically.

License

Apache 2.0 (Xerial / Taro L. Saito). The repackage adds no functional changes and inherits that license. Full text in LICENSE.


Issues, source: GitHub.

Available Versions

3.53.2.0+2026-06-06release
MC 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, fabric, folia, forge, neoforge, paper, purpur, quilt, spigot
June 6, 2026
3.53.2.0+2026-06-06release
MC 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, fabric, folia, forge, neoforge, paper, purpur, quilt, spigot
June 6, 2026
3.53.1.0+2026-05-07release
MC 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, fabric, folia, forge, neoforge, paper, purpur, quilt, spigot
May 7, 2026
3.53.0.0+2026-04-14release
MC 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, fabric, folia, forge, neoforge, paper, purpur, quilt, spigot
April 26, 2026
3.53.0.0+2026-04-14release
MC 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, fabric, folia, forge, neoforge, paper, purpur, quilt, spigot
April 26, 2026

How to Install Minecraft SQLite JDBC on Your Server

1

Order Server

Order a Minecraft Java server with at least 3 GB RAM (4 GB recommended).

2

Set bukkit Loader

In the panel under "Egg", select the bukkit loader and matching Minecraft version (26.1.2).

3

Install Mod

Open the mod browser in the dashboard and search for "Minecraft SQLite JDBC". Click "Install" – done! Alternatively, upload the .jar via SFTP to the /mods folder.

Compatibility

Mod Loaders

bukkitfabricfoliaforgeneoforgepaperpurpurquiltspigot

Minecraft Versions

26.1.2, 26.1.1, 26.1 (+47 more)

Server-side

~ Optional

Recommended RAM

4 GB(min. 3 GB)

Frequently Asked Questions

Minecraft SQLite JDBC server crashes on startup – what to do?

Most common cause: wrong bukkit version or insufficient RAM. Check the server log (latest.log) for "OutOfMemoryError" or "Mixin" errors. With Mado Hosting: ensure at least 3 GB RAM is allocated and the loader matches the mod version (26.1.2). You can switch loaders with one click in the panel.

Is Minecraft SQLite JDBC compatible with bukkit and fabric and folia and forge and neoforge and paper and purpur and quilt and spigot?

Minecraft SQLite JDBC officially supports bukkit, fabric, folia, forge, neoforge, paper, purpur, quilt, spigot for Minecraft 26.1.2, 26.1.1, 26.1. Note: Forge and Fabric mods are NOT cross-compatible – pick one loader and stick with it. The Mado dashboard automatically detects incompatible loader combinations.

Server lagging with Minecraft SQLite JDBC – how to optimize performance?

Recommended RAM: 4 GB (per 8 players). Use /spark profiler to check if Minecraft SQLite JDBC consumes the most tick time. Common fixes: reduce server view-distance to 8-10, install "performant" or "starlight" as supplementary mods on Forge. With Mado Hosting, your server runs on NVMe SSDs with dedicated CPU cores for minimal latency.

Rent Modded Server

Install Minecraft SQLite JDBC with just one click on your server.

Recommended RAM
4 GBab €8/mo
Min. 3 GB | +1 GB pro 8 Spieler
Create Server Now
1-Click Mod Install
NVMe SSD Storage
DDoS Protection included

Details

License
Apache License 2.0
Server-side
Optional

Supported Versions

26.1.226.1.126.11.21.111.21.101.21.91.21.81.21.71.21.61.21.5+40 more