単一のファイルデータベースが提供するきちんとしたところに惹かれます。SQLiteをJavaに接続して使用するためのドライバー/コネクターライブラリはどこにありますか。
ラッパーライブラリhttp://www.ch-werner.de/javasqliteを見つけましたが、他にもっと有名なプロジェクトはありますか?
単一のファイルデータベースが提供するきちんとしたところに惹かれます。SQLiteをJavaに接続して使用するためのドライバー/コネクターライブラリはどこにありますか。
ラッパーライブラリhttp://www.ch-werner.de/javasqliteを見つけましたが、他にもっと有名なプロジェクトはありますか?
回答:
ウィキリストいくつかのより多くのラッパー:
SQLiteとJava で情報を検索しているときに、あなたの質問を見つけました。私のブログにも投稿した回答を追加したいと思っただけです。
私はしばらくJavaでコーディングしています。SQLiteについても知っていますが、使用したことはありません…他のアプリケーションで使用しましたが、自分でコーディングしたアプリケーションでは使用していません。だから今週のプロジェクトにそれが必要で、とても簡単に使えます!
SQLite用のJava JDBCドライバーを見つけました。JARファイルをクラスパスに追加して、java.sql。*をインポートするだけです。
彼のテストアプリはデータベースファイルを作成し、いくつかのSQLコマンドを送信してテーブルを作成し、テーブルにデータを格納し、それを読み取ってコンソールに表示します。プロジェクトのルートディレクトリにtest.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で実行され、インメモリテーブルなどをサポートし、そのすべての機能により、プロトタイピングや単体テストに非常に使いやすくなっています。
David Crawshawプロジェクト(sqlitejdbc-v056.jar)は古く、最後の更新は2009年6月20日でした。 ソースはこちら
Crawshaw sqliteラッパーのXerialsフォークをお勧めします。sqlitejdbc-v056.jarをXerials sqlite-jdbc-3.7.2.jarファイルで問題なく置き換えました。
バーニーの答えと同じ構文を使用し、はるかに高速で最新のsqliteライブラリを使用します。
ZentusのSQLite JDBCと何が違うのですか?
オリジナルのZentusのSQLite JDBCドライバー http://www.zentus.com/sqlitejdbc/自体は、Java言語のSQLiteデータベースを使用するための優れたユーティリティであり、SQLiteJDBCライブラリもその実装に依存しています。ただし、SQLiteのc / c ++コードを完全にJavaに変換するpure-javaバージョンは、各OS(win、mac、linux)用にコンパイルされたSQLiteバイナリを使用するネイティブバージョンと比較して大幅に遅くなります。
sqlite-jdbcのネイティブバージョンを使用するには、コマンドライン引数(例:-Djava.library.path =)を使用して、ネイティブコード(dll、jnilib、soファイル、JNDI Cプログラム)へのパスを設定する必要がありました。 (dll、jnilibなどへのパス)、または-Dorg.sqlite.lib.pathなど。このプロセスはエラーが発生しやすく、すべてのユーザーにこれらの変数を設定するように指示するのは面倒でした。SQLiteJDBCライブラリは、これらの不便さを完全に取り除きます。
もう1つの違いは、このSQLiteJDBC librayを最新バージョンのSQLiteエンジンに最新の状態に保つことです。これは、このライブラリの最もホットなユーザーの1人だからです。たとえば、SQLite JDBCは、パーソナライズされたゲノムブラウザーを作成するためのユーティリティであるUTGB(東京大学ゲノムブラウザー)ツールキットのコアコンポーネントです。
編集:いつものように何かを更新すると、コードのあいまいな場所に問題が発生します(私に起こった)。テストテストテスト=)
sqlite-jdbc
プロジェクトは素晴らしいですが、それがあることに注意してApacheがライセンスさ。したがって、コードがFOSSであるかプロプライエタリであるかに関係なく、それを使用する場合は帰属を示す必要があります。
SQLiteの純粋なJava実装である新しいプロジェクトSQLJetがあります。まだすべてのSQLite機能をサポートしていませんが、SQLiteデータベースで動作するいくつかのJavaプロジェクトにとっては非常に良いオプションかもしれません。
バーニーの投稿はとても役に立ちます。投票できませんでした(評判が十分ではありません:()。しかし、それは非常に役立ちました。繰り返します!
http://www.zentus.com/sqlitejdbc/
ここでは、最新のSQLite JDBC jarを見つけることができます。jarをクラスパスに追加するだけで完了です。:)バーニーのサンプルコードを実行して、すべてが正常かどうかをテストできます。
http://souptonuts.sourceforge.net/readme_sqlite_tutorial.html http://www.sqlite.org/lang.html
ここでは、SQLiteのSQL構文に関するヘルプを参照できます。SQLiteへの乾杯:)
sqlitejdbcコードはgitを使用してhttps://github.com/crawshaw/sqlitejdbcからダウンロードできます。
# git clone https://github.com/crawshaw/sqlitejdbc.git sqlitejdbc
...
# cd sqlitejdbc
# make
注:Makefileでは、sqliteライブラリ/ depsをダウンロードするためにcurlバイナリが必要です。
コード例により、Tomcatでメモリリークが発生し(webappをアンデプロイした後もクラスローダーがメモリに残ったまま)、outofmemory
最終的にはメモリリークが発生します。それを解決する方法は、sqlite-jdbc-3.7.8.jarを使用することです。これはスナップショットなので、Mavenにはまだ表示されません。
打ち間違え: java -cp .:sqlitejdbc-v056.jar Test
でなければなりません: java -cp .:sqlitejdbc-v056.jar; Test
「.jar」の後のセミコロンに注意してください。これが人々を助け、多くの面倒を引き起こす可能性があることを願っています
.:xxx.jar;
意味がありません。また、Testクラスのパッケージ名も指定する必要があります。