質問
私は、単一ファイル データベースが提供するすっきりとしたさに魅力を感じています。SQLite を Java に接続して使用するためのドライバー/コネクタ ライブラリは何ですか。
ラッパーライブラリを発見しました。 http://www.ch-werner.de/javasqlite, 、しかし他にもっと著名なプロジェクトはあるでしょうか?
解決
の ウィキ さらにいくつかのラッパーをリストします。
- Java ラッパー (SWIG インターフェース周辺): http://tk-software.home.comcast.net/
- SQLite 用の JDBC ドライバーを使用するための優れたチュートリアル。(少なくとも動作します!) http://www.ci.uchicago.edu/wiki/bin/view/VDS/VDSDevelopment/UsingSQLite
- Windows、Linux、OS X では埋め込みネイティブ SQLite ライブラリを使用し、他の OS では純粋な Java 実装にフォールバックするクロスプラットフォーム JDBC ドライバー。 https://github.com/xerial/sqlite-jdbc (以前は ゼントゥス)
- 別の Java - SWIG ラッパー。Win32でのみ動作します。 http://rodolfo_3.tripod.com/index.html
- sqlite-java-shell:NestedVM で構築された sqlite3 コマンドライン シェルの 100% Pure Java ポート。(これは JDBC ドライバーではありません)。
- Mysaifu JVM 用 SQLite JDBC ドライバー:Mysaifu JVM 用の SQLite JDBC ドライバーと、Windows (x86) および Linux (i386/PowerPC) 用の SQLite JNI ライブラリ。
他のヒント
情報を検索しているときにあなたの質問を見つけました SQLite そしてジャワ。私の回答も追加したいと思いました。 ブログ.
私はしばらく Java でコーディングしてきました。私も SQLite については知っていましたが、使用したことはありませんでした。まあ、他の方法で使用したことはあります。 アプリケーション しかし、私がコーディングしたアプリでは決してそうではありませんでした。今週のプロジェクトで必要になったのですが、使い方はとても簡単です。
SQLite 用の Java JDBC ドライバーを見つけました。を追加するだけです JARファイル クラスパスに追加し、java.sql.* をインポートします。
彼のテスト アプリはデータベース ファイルを作成し、いくつかの SQL コマンドを送信してテーブルを作成し、テーブルにデータを保存し、それを読み取ってコンソールに表示します。それは、 テスト.db プロジェクトのルートディレクトリにあるファイル。この例は次のように実行できます java -cp .:sqlitejdbc-v056.jar Test
.
package com.rungeek.sqlite;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class Test {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists people;");
stat.executeUpdate("create table people (name, occupation);");
PreparedStatement prep = conn.prepareStatement(
"insert into people values (?, ?);");
prep.setString(1, "Gandhi");
prep.setString(2, "politics");
prep.addBatch();
prep.setString(1, "Turing");
prep.setString(2, "computers");
prep.addBatch();
prep.setString(1, "Wittgenstein");
prep.setString(2, "smartypants");
prep.addBatch();
conn.setAutoCommit(false);
prep.executeBatch();
conn.setAutoCommit(true);
ResultSet rs = stat.executeQuery("select * from people;");
while (rs.next()) {
System.out.println("name = " + rs.getString("name"));
System.out.println("job = " + rs.getString("occupation"));
}
rs.close();
conn.close();
}
}
SQLite について具体的に質問されたと思いますが、おそらく HSQLデータベース Java の方が適しているでしょう。Java 自体で記述され、JVM で実行され、メモリ内テーブルなどをサポートします。これらすべての機能により、プロトタイピングや単体テストに非常に使いやすくなります。
新しいプロジェクトがあります SQLJet これは SQLite の純粋な Java 実装です。まだ SQLite のすべての機能をサポートしているわけではありませんが、SQLite データベースを操作する一部の Java プロジェクトにとっては非常に良いオプションになる可能性があります。
David Crawshaw プロジェクト (sqlitejdbc-v056.jar) は古くなっているようで、最終更新は 2009 年 6 月 20 日でした。 ソースはこちら
お勧めします ゼリアルズフォーク Crawshaw sqlite ラッパーの。sqlitejdbc-v056.jar を問題なく Xerials sqlite-jdbc-3.7.2.jar ファイルに置き換えました。
と同じ構文を使用します バーニーの答え 最新の sqlite ライブラリを使用すると、はるかに高速になります。
Zentus の SQLite JDBC との違いは何ですか?
オリジナルの Zentus の SQLite JDBC ドライバー http://www.zentus.com/sqlitejdbc/ それ自体は、Java LanguageのSQLiteデータベースを使用するための優れたユーティリティであり、SQLiteJDBCライブラリもその実装に依存しています。ただし、SQLiteのC/C ++コードを完全に翻訳するPure-Javaバージョンは、各OS(Win、Mac、Linux)にコンパイルされたSQLiteバイナリを使用するネイティブバージョンと比較して大幅に遅くなります。
SQLite-JDBCのネイティブバージョンを使用するには、ユーザーはコマンドライン引数を使用して、ネイティブコード(DLL、JNILIB、SOファイル)へのパスを設定する必要がありました。 (dll、jnilibなどへのパス)、または-dorg.sqlite.lib.pathなど。このプロセスはエラーが発生しやすく、すべてのユーザーにこれらの変数を設定するように指示するのは面倒でした。当社の SQLiteJDBC ライブラリは、これらの不便さを完全に解消します。
もう1つの違いは、私たちがこのライブラリで最もホットなユーザーの1人であるため、このSQLiteJDBC LibrayをSQLiteエンジンの最新バージョンに最新の状態に保つことです。たとえば、SQLite JDBCはUTGB(東京大学ゲノムブラウザー)ツールキットのコアコンポーネントであり、パーソナライズされたゲノムブラウザーを作成する当社のユーティリティです。
編集 :いつものように、何かを更新すると、コード内のわかりにくい場所で問題が発生します(私にも起こりました)。テストテストテスト =)
バーニーさんの投稿はとても役に立ちます。投票できませんでした (十分な評判がありません:( )。しかし、とても役に立ちました。繰り返しますが!
http://www.zentus.com/sqlitejdbc/
ここに最新の SQLite JDBC jar があります。jar をクラスパスに追加するだけで完了です。:) Bernie のサンプル コードを実行して、すべてが正常かどうかをテストできます。
http://souptonuts.sourceforge.net/readme_sqlite_tutorial.html http://www.sqlite.org/lang.html
ここでは、SQLite の SQL 構文に関するヘルプを見つけることができます。SQLite に乾杯:)
コードをコンパイルして実行するときは、クラスパス オプションの値を設定する必要があります。次のようになります。
javac -classpath .;sqlitejdbc-v056.jar Text.java
java -classpath .;sqlitejdbc-v056.jar Text
「」に注意してください。そしてスマート ";"(win、linux is ":")
sqlitejdbc コードは、git を使用して次からダウンロードできます。 https://github.com/crawshaw/sqlitejdbc.
# git clone https://github.com/crawshaw/sqlitejdbc.git sqlitejdbc
...
# cd sqlitejdbc
# make
注記:Makefile では、sqlite ライブラリ/deps をダウンロードするために、curl バイナリが必要です。
このサンプル コードでは、Tomcat でメモリ リークが発生し (Web アプリケーションをアンデプロイした後、クラスローダーがメモリ内に残ります)、 outofmemory
最終的に。それを解決する方法は、 sqlite-jdbc-3.7.8.jar;これはスナップショットなので、Maven にはまだ表示されません。
打ち間違え: java -cp .:sqlitejdbc-v056.jar Test
次のようにする必要があります: java -cp .:sqlitejdbc-v056.jar; Test
「.jar」の後のセミコロンに注意してください。これが人々の助けになることを願っていますが、多くの問題を引き起こす可能性があります