SQLite JDBC は、Java で SQLite データベース ファイルにアクセスして作成するためのライブラリです。
当社の SQLiteJDBC ライブラリは、Windows、macOS、Linux などの主要な OS のネイティブ ライブラリが単一の JAR (Java Archive) ファイルにアセンブルされているため、設定を必要としません。
プロジェクトは維持されていますが、積極的に開発されていません。
私たちは SQLite の新しいバージョンをすべてフォローし、対応するバージョンのドライバーをリリースする予定です。
バグは調査され、可能であれば修正されます。
新機能はプル リクエストによって推進されます。
プロジェクトの現在のメンテナは Gotson です。
➡️ その他の使用例と構成は USAGE.md で入手できます。
SQLite JDBC は、JDBC API を通じて SQLite データベースにアクセスするためのライブラリです。 JDBC の一般的な使用方法については、「JDBC チュートリアル」または「Oracle JDBC ドキュメント」を参照してください。
sqlite-jdbc-3.47.1.0.jar
をダウンロードし、この jar ファイルをクラスパスに追加します。
コードから SQLite データベース接続を開きます。 (以下の例を参照してください)
sqlite-jdbc-3.47.1.0.jar
が現在のディレクトリに配置されていると仮定します。
> javac Sample.java
> java -classpath " .;sqlite-jdbc-3.47.1.0.jar " Sample # in Windows
or
> java -classpath " .:sqlite-jdbc-3.47.1.0.jar " Sample # in macOS or Linux
name = leo
id = 1
name = yui
id = 2
import java . sql . Connection ;
import java . sql . DriverManager ;
import java . sql . ResultSet ;
import java . sql . SQLException ;
import java . sql . Statement ;
public class Sample
{
public static void main ( String [] args )
{
// NOTE: Connection and Statement are AutoCloseable.
// Don't forget to close them both in order to avoid leaks.
try
(
// create a database connection
Connection connection = DriverManager . getConnection ( "jdbc:sqlite:sample.db" );
Statement statement = connection . createStatement ();
)
{
statement . setQueryTimeout ( 30 ); // set timeout to 30 sec.
statement . executeUpdate ( "drop table if exists person" );
statement . executeUpdate ( "create table person (id integer, name string)" );
statement . executeUpdate ( "insert into person values(1, 'leo')" );
statement . executeUpdate ( "insert into person values(2, 'yui')" );
ResultSet rs = statement . executeQuery ( "select * from person" );
while ( rs . next ())
{
// read the result set
System . out . println ( "name = " + rs . getString ( "name" ));
System . out . println ( "id = " + rs . getInt ( "id" ));
}
}
catch ( SQLException e )
{
// if the error message is "out of memory",
// it probably means no database file is found
e . printStackTrace ( System . err );
}
}
}
SQLite JDBC ドライバー パッケージ (つまり、 sqlite-jdbc-3.47.1.0.jar
) には 3 種類のネイティブ SQLite ライブラリ ( sqlitejdbc.dll
、 sqlitejdbc.dylib
、 sqlitejdbc.so
) が含まれており、それぞれが Windows、macOS、Linux 用にコンパイルされています。 。プログラムがorg.sqlite.JDBC
ドライバーをロードすると、適切なネイティブ ライブラリ ファイルが OS の一時フォルダーに自動的に抽出されます。
sqlite-jdbc-3.6.19 以降、ネイティブ コンパイルされた SQLite エンジンは次のオペレーティング システムで使用されます。
x86 | x86_64 | armv5 | armv6 | armv7 | 腕64 | ppc64 | riscv64 | |
---|---|---|---|---|---|---|---|---|
窓 | ✔ | ✔ | ✔ | ✔ | ||||
macOS | ✔ | ✔ | ||||||
Linux (libc) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Linux (musl) | ✔ | ✔ | ✔ | |||||
Android (API レベル 24+) | ✔ | ✔ | ✔ | ✔ | ||||
FreeBSD | ✔ | ✔ | ✔ |
上記以外の OS では、純粋な Java SQLite が使用されます。 (3.7.15 より前のバージョンに適用されます)
OS のネイティブ ライブラリを使用する場合は、ソースを最初からビルドします。
Sqlite JDBC は、バージョン 3.40.1.0 以降、そのままで GraalVM ネイティブ イメージをサポートします。それ以前のいくつかのバージョンには基本的なサポートがありましたが、これは CI によって積極的にテストされていませんでした。
デフォルトでは、コンパイル ターゲットのsqlitejdbc
ライブラリは、必要な JNI 構成とともにネイティブ イメージに含まれます。実行時に、このライブラリは一時フォルダーに抽出され、そこからロードされます。ただし、起動を高速化するには、ビルド時にorg.sqlite.lib.exportPath
プロパティを設定することをお勧めします。これにより、ビルド時にsqlitejdbc
ライブラリが指定されたディレクトリにエクスポートされ、ライブラリはリソースとして含まれません。その結果、ネイティブ イメージ自体は若干小さくなり、実行時にライブラリをエクスポートするオーバーヘッドはなくなりますが、実行時にライブラリが見つかることを確認する必要があります。これを行う最善の方法は、ライブラリを実行可能ファイルの隣に配置することです。
native-image -Dorg.sqlite.lib.exportPath= ~ /outDir -H:Path= ~ /outDir -cp foo.jar org.example.Main
これにより、 sqlitejdbc
共有ライブラリとネイティブ イメージ出力の両方が~/outDir
フォルダーに配置されます。
この例では、native-build-tools Maven プラグインを使用します。
< plugin >
< groupId >org.graalvm.buildtools</ groupId >
< artifactId >native-maven-plugin</ artifactId >
< configuration >
< buildArgs >
< buildArg >-Dorg.sqlite.lib.exportPath=${project.build.directory}</ buildArg >
</ buildArgs >
</ configuration >
</ plugin >
これにより、 sqlitejdbc
ライブラリがプロジェクトの/target
フォルダーに自動的に配置され、機能的な実行環境が作成されます。結果として得られるアプリをパッケージ化するときは、配布バンドルにライブラリを含めるだけです。
Maven Central またはリリース ページからダウンロードします。
< dependencies >
< dependency >
< groupId >org.xerial</ groupId >
< artifactId >sqlite-jdbc</ artifactId >
< version >3.47.1.0</ version >
</ dependency >
</ dependencies >
開発バージョンのスナップショットは、Sonatype のスナップショット リポジトリで入手できます。
Maven Central リソースは GPG を使用して署名されており、.asc で終わる署名ファイルは他のダウンロードと同じ場所にあります。
現在、リリースの署名には次のキーが使用されています。
-----PGP 公開キー ブロックを開始します----- コメント: C1CB A75E C9BD 0BAF 8061 9354 59E0 5CE6 1818 7ED4 コメント: Taro L. Saito (GitHub Actions 担当) <[email protected]> xjMEYURVGhYJKwYBBAHaRw8BAQda2Dp4m1Yhtb1g94pQzzL24FuP6b9KXF8lP9Dh hZnynhfNM1Rhcm8gTC4gU2FpdG8gKEZvciBHaXRIdWIgQWN0aW9ucykgPGxlb0B4 ZXJpYWwub3JnPsKUBBMWCgA8FiEEwcunXsm9C6+AYZNUWeBc5hgYftQFAmLkVRoC GwMFCwkIBwIDigIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEFngXOYYGH7UfPwBAK7x TVRebZeWcAwmGaMUsbg7SgJou8xnkhByObPLUC/4AQDPsZeYmi4KXyXPzmqhCicd Y+ZSJWIDQqitK2ujPDFXA844BGLkVRoSCisGAQQBl1UBBQEBB0Atu9kejBi+6wfO T0a9z/LYEEdNXM/VX6xt1onKToPPdQMBCAfCeAQYFgoAIBYhBMHLp17JvQuvgGGT VFngXOYYGH7UBQJi5FUaAhsMAAoJEFngXOYYGH7UlMABAKyRCazhVyUFg5FOpAnm ckBY38CaMGPPLXVyY8Kr6dYFAP9wYLu7nsDZCOXkAgS+et4Pk1WZCggoYUkxsX1o 0KZXBQ== =ワイアス -----PGP公開キーブロックの終了-----
プロジェクトのバージョンは、jar にバンドルされている SQLite ライブラリのバージョンに従い、プロジェクトの増分を示す追加の数字が付きます。
たとえば、SQLite バージョンが3.39.2
の場合、プロジェクト バージョンは3.39.2.x
になります。ここで、 x
0 から始まり、SQLite バージョンを変更しないリリースごとに増加します。
SQLite のバージョンが3.40.0
に更新されると、プロジェクトのバージョンも3.40.0.0
に更新されます。
No suitable driver found for jdbc:sqlite:
問題を解決するには、シェード プラグイン トランスフォーマーを追加する必要がある場合があります。
< transformer
implementation= " org.apache.maven.plugins.shade.resource.AppendingTransformer " >
< resource >META-INF/services/java.sql.Driver</ resource >
</ transformer >
< dependency >
< groupId >org.xerial</ groupId >
< artifactId >sqlite-jdbc</ artifactId >
< version >3.47.1.0</ version >
</ dependency >
私たちは常に以下を探しています:
問題や PR のレビュー担当者は、次のことを確認できます。
PR を提出する寄稿者を確認できますそして
貢献ガイドをお読みください。