1

埋め込み可能な「非 JDBC」SQL データベースはありますか? これは、ハードウェア上でサーバーを実行する必要がないものです (SQLite など)。

純粋なJavaの場合はボーナスポイント。

4

3 に答える 3

5

いくつかあります: H2Derby (Java SDK に「Java DB」として含まれています)、およびHSQL

H2 は非常に安定しており (ただし、本番コードには 1.3.x を使用しません)、他のほとんどすべての SQL データベースをエミュレートできます (つまり、Oracle SQL 構文を受け入れるように構成できます)。単体テストに最適です。

Derby は DB2 の Java バージョンです。使用するのは少し不器用ですが、本番用の準備ができています。

HSQLDB は、古い埋め込み型の純粋な Java データベースです。H2に出会うまではよく使っていました。

EDIT H2 はIF NOT EXISTS、その他多くの便利な機能をサポートしています。そのようなことは JDBC の一部ではないことに注意してください。JDBC は文字列をデータベースに送信するだけです。ただし、すべてのデータベースには独自の SQL ダイアレクトと独自の機能セットがあります。これについて JDBC ができることはほとんどありません。

多くのデータベースが同様に動作するものを探す場合は、jOOQを調べてください。品質を重視する場合は、これも考慮する必要があります。

于 2013-06-13T14:58:57.127 に答える
2

SQLite私が最近使い始めたのはかなり良いデータベースです。メモリ内またはディスク上にデータベースを作成でき、外部インストールは必要ありません。

アップデート

@Chase、JDBCクエリについて誤解しているようです。唯一の違いは、クエリを文字列に入れることです。

これは、SQLite を使用した簡単なクエリです。

private String mSQL = "select count(1) from t\n";

private void foo()
{
    Connection con = getJDBCConnection();
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(sql);

    while (rs.next())
    {
        int n = rs.getInt("anzahl");
        System.out.println(n);
    }
    stmt.close();
    con.close();
}

更新 2

これは、見たかったように、if 句を使用してテーブルをドロップするサンプルです。実際の create table ステートメントは別の場所で準備されているため、その動作を示すために行を投稿しただけです。

statement.executeUpdate("drop table if exists "+oTablename);
于 2013-06-13T15:02:57.823 に答える
0

Sqlite4Javaは、SQLite 用の無料の Java ラッパーです。JDBC ドライバーではありません。

Mac OS X、Windows、Linux、および Android 用のバイナリがあります。

于 2013-06-13T15:36:51.627 に答える