Created by: gwideman, Jun 7, 2012 6:23 pm
Revised by: gwideman, Apr 10, 2014 7:40 pm (6 revisions)

Note: most of this page written 2012-06. See 2014 update at the end.

Overview

This page is an exploration of the alternatives for a database which can be used as structured file storage by a Java desktop app (ie: "embedded" database, not requiring a separate server), and can also be connected to by the vast array of Windows database tools, including Access and Excel, for example via ODBC.
This is the scenario that's long been possible with Windows languages, using databases such as Access (Jet), dBase/FoxPro, and numerous others.
However, it appears there are obstacles for the Java <--> desktop DB scenario:

Possibilities

Sun Java DB, aka Apache Derby, aka IBM Cloudscape

Tentative conclusion: It can be done, but though Derby can work embedded via JDBC, it seems that to access it through ODBC requires setting up a Derby server, which looks pretty onerous, even just to track down the relevant docs and components (due to it being spread across Sun/Oracle, Apache and IBM).

HSQLDB

  • http://hsqldb.org/
    • 100% Java database "supports embedded and server modes"
    • Quite widely used
  • ODBC driver: Being worked on, the beta partially works, but there seems almost no traffic on the Help forum (two threads in two years). So this seems like a non-starter.

H2

Seems well thought-out, and the docs are clear.

SQLite

More on SQLite

Including some notes on accessing SQLite from Python: