SQLite JDBC adalah perpustakaan untuk mengakses dan membuat file database SQLite di Java.
Pustaka SQLiteJDBC kami tidak memerlukan konfigurasi karena pustaka asli untuk OS utama, termasuk Windows, macOS, Linux, dll., dirangkai menjadi satu file JAR (Java Archive).
Proyek ini dipertahankan, tetapi tidak dikembangkan secara aktif:
Kami mengikuti setiap versi baru SQLite dan akan merilis versi driver kami yang sesuai.
Bug akan diselidiki, dan diperbaiki jika memungkinkan.
Fitur baru didorong oleh permintaan tarik.
Pengelola proyek saat ini adalah Gotson.
➡️ Contoh penggunaan dan konfigurasi lainnya tersedia di USAGE.md
SQLite JDBC adalah perpustakaan untuk mengakses database SQLite melalui JDBC API. Untuk penggunaan umum JDBC, lihat Tutorial JDBC atau Dokumentasi Oracle JDBC.
Unduh sqlite-jdbc-3.47.1.0.jar
lalu tambahkan file jar ini ke classpath Anda.
Buka koneksi database SQLite dari kode Anda. (lihat contoh di bawah)
Dengan asumsi sqlite-jdbc-3.47.1.0.jar
ditempatkan di direktori saat ini.
> 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 );
}
}
}
Paket driver SQLite JDBC kami (yaitu, sqlite-jdbc-3.47.1.0.jar
) berisi tiga jenis perpustakaan SQLite asli ( sqlitejdbc.dll
, sqlitejdbc.dylib
, sqlitejdbc.so
), masing-masing dikompilasi untuk Windows, macOS dan Linux . File perpustakaan asli yang sesuai secara otomatis diekstraksi ke folder sementara OS Anda, ketika program Anda memuat driver org.sqlite.JDBC
.
Sejak sqlite-jdbc-3.6.19, mesin SQLite yang dikompilasi secara asli akan digunakan untuk sistem operasi berikut:
x86 | x86_64 | lenganv5 | lenganv6 | lenganv7 | lengan64 | ppc64 | risikocv64 | |
---|---|---|---|---|---|---|---|---|
jendela | ✔ | ✔ | ✔ | ✔ | ||||
macOS | ✔ | ✔ | ||||||
Linux (libc) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Linux (musl) | ✔ | ✔ | ✔ | |||||
Android (API Tingkat 24+) | ✔ | ✔ | ✔ | ✔ | ||||
FreeBSD | ✔ | ✔ | ✔ |
Di OS lain yang tidak tercantum di atas, SQLite java murni digunakan. (Berlaku untuk versi sebelum 3.7.15)
Jika Anda ingin menggunakan perpustakaan asli untuk OS Anda, buatlah sumbernya dari awal.
Sqlite JDBC mendukung gambar asli GraalVM mulai dari versi 3.40.1.0. Terdapat dukungan dasar untuk beberapa versi sebelumnya, namun hal ini tidak diuji secara aktif oleh CI.
Secara default, pustaka sqlitejdbc
untuk target kompilasi akan disertakan dalam gambar asli, disertai dengan konfigurasi JNI yang diperlukan. Saat runtime, perpustakaan ini akan diekstraksi ke folder temp dan dimuat dari sana. Namun untuk startup yang lebih cepat, disarankan untuk menyetel properti org.sqlite.lib.exportPath
pada waktu build. Ini akan mengekspor perpustakaan sqlitejdbc
pada waktu pembangunan ke direktori yang ditentukan, dan perpustakaan tidak akan disertakan sebagai sumber daya. Hasilnya, gambar asli itu sendiri akan sedikit lebih kecil dan biaya tambahan untuk mengekspor perpustakaan pada waktu proses dihilangkan, namun Anda perlu memastikan perpustakaan dapat ditemukan pada waktu proses. Cara terbaik untuk melakukan ini adalah dengan menempatkan perpustakaan di sebelah file yang dapat dieksekusi.
native-image -Dorg.sqlite.lib.exportPath= ~ /outDir -H:Path= ~ /outDir -cp foo.jar org.example.Main
Ini akan menempatkan perpustakaan bersama sqlitejdbc
dan keluaran gambar asli di folder ~/outDir
.
Contoh ini menggunakan plugin maven native-build-tools:
< 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 >
Ini secara otomatis akan menempatkan perpustakaan sqlitejdbc
di folder /target
proyek Anda, menciptakan lingkungan eksekusi yang fungsional. Saat mengemas aplikasi yang dihasilkan, cukup sertakan perpustakaan dalam paket distribusi.
Unduh dari Maven Central atau dari halaman rilis.
< dependencies >
< dependency >
< groupId >org.xerial</ groupId >
< artifactId >sqlite-jdbc</ artifactId >
< version >3.47.1.0</ version >
</ dependency >
</ dependencies >
Snapshot versi pengembangan tersedia di repositori snapshot Sonatype.
Sumber daya Maven Central ditandatangani menggunakan GPG dan file tanda tangan, yang diakhiri dengan .asc, tersedia di lokasi yang sama dengan unduhan lainnya.
Kunci berikut saat ini digunakan untuk menandatangani rilis:
-----MULAI BLOK KUNCI PUBLIK PGP----- Komentar: C1CB A75E C9BD 0BAF 8061 9354 59E0 5CE6 1818 7ED4 Komentar: Taro L. Saito (Untuk Tindakan GitHub) <[email protected]> xjMEYuRVGhYJKwYBBAHaRw8BAQdA2Dp4m1Yhtb1g94pQzzL24FuP6b9KXF8lP9Dh hZnynhfNM1Rhcm8gTC4gU2FpdG8gKEZvciBHaXRIdWIgQWN0aW9ucykgPGxlb0B4 ZXJpYWwub3JnPsKUBBMWCgA8FiEEwcunXsm9C6+AYZNUWeBc5hgYftQFAmLkVRoC GwMFCwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEFngXOYYGH7UfPwBAK7x TVRebZeWcAwmGaMUsbg7SgJou8xnkhByObPLUC/4AQDPsZeYmi4KXyXPzmqhCicd Y+ZSJWIDQqitK2ujPDFXA844BGLkVRoSCisGAQQBl1UBBQEBB0Atu9kejBi+6wfO T0a9z/LYEEdNXM/VX6xt1onKToPPdQMBCAfCeAQYFgoAIBYhBMHLp17JvQuvgGGT VFngXOYYGH7UBQJi5FUaAhsMAAoJEFngXOYYGH7UlMABAKyRCazhVyUFg5FOpAnm ckBY38CaMGPPLXVyY8Kr6dYFAP9wYLu7nsDZCOXkAgS+et4Pk1WZCggoYUkxsX1o 0KZXBQ== =Wya -----AKHIR BLOK KUNCI PUBLIK PGP-----
Versi proyek mengikuti versi perpustakaan SQLite yang dibundel dalam toples, dengan angka tambahan untuk menunjukkan kenaikan proyek.
Misalnya, jika versi SQLite adalah 3.39.2
, versi proyeknya adalah 3.39.2.x
, dengan x
dimulai dari 0, dan bertambah setiap rilis yang tidak mengubah versi SQLite.
Jika versi SQLite diperbarui menjadi 3.40.0
, versi proyek akan diperbarui menjadi 3.40.0.0
.
Anda mungkin perlu menambahkan transformator plugin naungan untuk menyelesaikan masalah 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 >
Kami selalu mencari:
Reviewer untuk isu atau PR, bisa Anda cek
Kontributor untuk mengirimkan PR, Anda dapat memeriksanya Dan
Silakan baca panduan kontribusi kami.