SQLite JDBC ist eine Bibliothek für den Zugriff auf und die Erstellung von SQLite-Datenbankdateien in Java.
Unsere SQLiteJDBC-Bibliothek erfordert keine Konfiguration, da native Bibliotheken für die wichtigsten Betriebssysteme, einschließlich Windows, macOS, Linux usw., in einer einzigen JAR-Datei (Java Archive) zusammengestellt werden.
Das Projekt wird gepflegt, aber nicht aktiv weiterentwickelt:
Wir verfolgen jede neue Version von SQLite und werden eine entsprechende Version unseres Treibers veröffentlichen.
Fehler werden untersucht und wenn möglich behoben.
Neue Funktionen werden durch Pull-Requests gesteuert.
Der aktuelle Betreuer des Projekts ist Gotson.
➡️ Weitere Anwendungsbeispiele und Konfigurationen finden Sie in USAGE.md
SQLite JDBC ist eine Bibliothek für den Zugriff auf SQLite-Datenbanken über die JDBC-API. Informationen zur allgemeinen Verwendung von JDBC finden Sie im JDBC-Tutorial oder in der Oracle JDBC-Dokumentation.
Laden Sie sqlite-jdbc-3.47.1.0.jar
herunter und hängen Sie diese JAR-Datei dann an Ihren Klassenpfad an.
Öffnen Sie eine SQLite-Datenbankverbindung aus Ihrem Code. (siehe Beispiel unten)
Vorausgesetzt, sqlite-jdbc-3.47.1.0.jar
befindet sich im aktuellen Verzeichnis.
> 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 );
}
}
}
Unser SQLite-JDBC-Treiberpaket (d. h. sqlite-jdbc-3.47.1.0.jar
) enthält drei Arten nativer SQLite-Bibliotheken ( sqlitejdbc.dll
, sqlitejdbc.dylib
, sqlitejdbc.so
), von denen jede für Windows, macOS und Linux kompiliert ist . Eine entsprechende native Bibliotheksdatei wird automatisch in den temporären Ordner Ihres Betriebssystems extrahiert, wenn Ihr Programm den Treiber org.sqlite.JDBC
lädt.
Seit sqlite-jdbc-3.6.19 werden die nativ kompilierten SQLite-Engines für die folgenden Betriebssysteme verwendet:
x86 | x86_64 | armv5 | armv6 | armv7 | arm64 | ppc64 | riscv64 | |
---|---|---|---|---|---|---|---|---|
Windows | ✔ | ✔ | ✔ | ✔ | ||||
macOS | ✔ | ✔ | ||||||
Linux (libc) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Linux (musl) | ✔ | ✔ | ✔ | |||||
Android (API-Level 24+) | ✔ | ✔ | ✔ | ✔ | ||||
FreeBSD | ✔ | ✔ | ✔ |
In den anderen oben nicht aufgeführten Betriebssystemen wird das reine Java-SQLite verwendet. (Gilt für Versionen vor 3.7.15)
Wenn Sie die native Bibliothek für Ihr Betriebssystem verwenden möchten, erstellen Sie die Quelle von Grund auf.
SQLite JDBC unterstützt das native GraalVM-Image ab Version 3.40.1.0 sofort. Zuvor gab es für einige Versionen eine rudimentäre Unterstützung, die jedoch vom CI nicht aktiv getestet wurde.
Standardmäßig ist die sqlitejdbc
-Bibliothek für das Kompilierungsziel im nativen Image enthalten, zusammen mit der erforderlichen JNI-Konfiguration. Zur Laufzeit wird diese Bibliothek in den temporären Ordner extrahiert und von dort geladen. Für einen schnelleren Start wird jedoch empfohlen, die Eigenschaft org.sqlite.lib.exportPath
zur Build-Zeit festzulegen. Dadurch wird die sqlitejdbc
Bibliothek zur Erstellungszeit in das angegebene Verzeichnis exportiert und die Bibliothek wird nicht als Ressource einbezogen. Dadurch wird das native Image selbst etwas kleiner und der Aufwand für den Export der Bibliothek zur Laufzeit entfällt. Sie müssen jedoch sicherstellen, dass die Bibliothek zur Laufzeit gefunden werden kann. Der beste Weg, dies zu tun, besteht darin, die Bibliothek einfach neben der ausführbaren Datei zu platzieren.
native-image -Dorg.sqlite.lib.exportPath= ~ /outDir -H:Path= ~ /outDir -cp foo.jar org.example.Main
Dadurch werden sowohl die gemeinsam genutzte Bibliothek sqlitejdbc
als auch die Native-Image-Ausgabe im Ordner ~/outDir
abgelegt.
In diesem Beispiel wird das Maven-Plugin native-build-tools verwendet:
< 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 >
Dadurch wird die sqlitejdbc
-Bibliothek automatisch im Ordner /target
Ihres Projekts abgelegt und eine funktionsfähige Ausführungsumgebung erstellt. Fügen Sie beim Packen der resultierenden App einfach die Bibliothek in das Distributionspaket ein.
Laden Sie es von Maven Central oder von der Release-Seite herunter.
< dependencies >
< dependency >
< groupId >org.xerial</ groupId >
< artifactId >sqlite-jdbc</ artifactId >
< version >3.47.1.0</ version >
</ dependency >
</ dependencies >
Snapshots der Entwicklungsversion sind im Snapshots-Repository von Sonatype verfügbar.
Maven Central-Ressourcen werden mit GPG signiert und die Signaturdateien, die auf .asc enden, sind am selben Speicherort wie die anderen Downloads verfügbar.
Der folgende Schlüssel wird derzeit zum Signieren von Veröffentlichungen verwendet:
-----BEGIN PGP PUBLIC KEY BLOCK----- Kommentar: C1CB A75E C9BD 0BAF 8061 9354 59E0 5CE6 1818 7ED4 Kommentar: Taro L. Saito (Für GitHub-Aktionen) <[email protected]> xjMEYuRVGhYJKwYBBAHaRw8BAQdA2Dp4m1Yhtb1g94pQzzL24FuP6b9KXF8lP9Dh hZnynhfNM1Rhcm8gTC4gU2FpdG8gKEZvciBHaXRIdWIgQWN0aW9ucykgPGxlb0B4 ZXJpYWwub3JnPsKUBBMWCgA8FiEEwcunXsm9C6+AYZNUWeBc5hgYftQFAmLkVRoC GwMFCwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEFngXOYYGH7UfPwBAK7x TVRebZeWcAwmGaMUsbg7SgJou8xnkhByObPLUC/4AQDPsZeYmi4KXyXPzmqhCicd Y+ZSJWIDQqitK2ujPDFXA844BGLkVRoSCisGAQQBl1UBBQEBB0Atu9kejBi+6wfO T0a9z/LYEEdNXM/VX6xt1onKToPPdQMBCAfCeAQYFgoAIBYhBMHLp17JvQuvgGGT VFngXOYYGH7UBQJi5FUaAhsMAAoJEFngXOYYGH7UlMABAKyRCazhVyUFg5FOpAnm ckBY38CaMGPPLXVyY8Kr6dYFAP9wYLu7nsDZCOXkAgS+et4Pk1WZCggoYUkxsX1o 0KZXBQ== =Wyas -----END PGP PUBLIC KEY BLOCK-----
Die Version des Projekts folgt der Version der SQLite-Bibliothek, die im JAR gebündelt ist, mit einer zusätzlichen Ziffer, die das Inkrement des Projekts angibt.
Wenn die SQLite-Version beispielsweise 3.39.2
ist, lautet die Projektversion 3.39.2.x
, wobei x
bei 0 beginnt und mit jeder Veröffentlichung erhöht wird, die die SQLite-Version nicht ändert.
Wenn die SQLite-Version auf 3.40.0
aktualisiert wird, wird die Projektversion auf 3.40.0.0
aktualisiert.
Möglicherweise müssen Sie den Shade-Plugin-Transformer hinzufügen, um das Problem No suitable driver found for jdbc:sqlite:
zu lösen.
< 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 >
Wir sind immer auf der Suche nach:
Gutachter für Probleme oder PRs können Sie überprüfen
Mitwirkende , die PRs einreichen, können Sie überprüfen Und
Bitte lesen Sie unseren Beitragsleitfaden.