SQLite JDBC est une bibliothèque permettant d'accéder et de créer des fichiers de base de données SQLite en Java.
Notre bibliothèque SQLiteJDBC ne nécessite aucune configuration puisque les bibliothèques natives des principaux systèmes d'exploitation, notamment Windows, macOS, Linux, etc., sont assemblées dans un seul fichier JAR (Java Archive).
Le projet est maintenu, mais n'est pas activement développé :
Nous suivons chaque nouvelle version de SQLite et publierons une version correspondante de notre pilote.
Les bugs seront étudiés et corrigés si possible.
Les nouvelles fonctionnalités sont pilotées par des pull request.
Le responsable actuel du projet est Gotson.
➡️ D'autres exemples d'utilisation et de configuration sont disponibles dans USAGE.md
SQLite JDBC est une bibliothèque permettant d'accéder aux bases de données SQLite via l'API JDBC. Pour l'utilisation générale de JDBC, consultez le didacticiel JDBC ou la documentation Oracle JDBC.
Téléchargez sqlite-jdbc-3.47.1.0.jar
puis ajoutez ce fichier jar dans votre chemin de classe.
Ouvrez une connexion à la base de données SQLite à partir de votre code. (voir l'exemple ci-dessous)
En supposant sqlite-jdbc-3.47.1.0.jar
soit placé dans le répertoire actuel.
> 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 );
}
}
}
Notre package de pilotes SQLite JDBC (c'est-à-dire sqlite-jdbc-3.47.1.0.jar
) contient trois types de bibliothèques SQLite natives ( sqlitejdbc.dll
, sqlitejdbc.dylib
, sqlitejdbc.so
), chacune d'elles est compilée pour Windows, macOS et Linux. . Un fichier de bibliothèque native approprié est automatiquement extrait dans le dossier temporaire de votre système d'exploitation lorsque votre programme charge le pilote org.sqlite.JDBC
.
Depuis sqlite-jdbc-3.6.19, les moteurs SQLite compilés nativement seront utilisés pour les systèmes d'exploitation suivants :
x86 | x86_64 | armv5 | armv6 | armv7 | bras64 | ppc64 | riscv64 | |
---|---|---|---|---|---|---|---|---|
Fenêtres | ✔ | ✔ | ✔ | ✔ | ||||
macOS | ✔ | ✔ | ||||||
Linux (libc) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Linux (musl) | ✔ | ✔ | ✔ | |||||
Android (API niveau 24+) | ✔ | ✔ | ✔ | ✔ | ||||
GratuitBSD | ✔ | ✔ | ✔ |
Dans les autres systèmes d'exploitation non répertoriés ci-dessus, le SQLite pur Java est utilisé. (S'applique aux versions antérieures à 3.7.15)
Si vous souhaitez utiliser la bibliothèque native pour votre système d'exploitation, créez la source à partir de zéro.
Sqlite JDBC prend en charge l'image native GraalVM dès la version 3.40.1.0. Il y avait un support rudimentaire pour certaines versions auparavant, mais cela n'a pas été activement testé par le CI.
Par défaut, la bibliothèque sqlitejdbc
pour la cible de compilation sera incluse dans l'image native, accompagnée de la configuration JNI requise. Au moment de l'exécution, cette bibliothèque sera extraite dans le dossier temporaire et chargée à partir de là. Toutefois, pour un démarrage plus rapide, il est recommandé de définir la propriété org.sqlite.lib.exportPath
au moment de la construction. Cela exportera la bibliothèque sqlitejdbc
au moment de la construction vers le répertoire spécifié et la bibliothèque ne sera pas incluse en tant que ressource. En conséquence, l'image native elle-même sera légèrement plus petite et la surcharge liée à l'exportation de la bibliothèque au moment de l'exécution sera éliminée, mais vous devez vous assurer que la bibliothèque peut être trouvée au moment de l'exécution. La meilleure façon de procéder est simplement de placer la bibliothèque à côté de l’exécutable.
native-image -Dorg.sqlite.lib.exportPath= ~ /outDir -H:Path= ~ /outDir -cp foo.jar org.example.Main
Cela placera à la fois la bibliothèque partagée sqlitejdbc
et la sortie de l'image native dans le dossier ~/outDir
.
Cet exemple utilise le 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 >
Cela placera automatiquement la bibliothèque sqlitejdbc
dans le dossier /target
de votre projet, créant ainsi un environnement d'exécution fonctionnel. Lors de l’empaquetage de l’application résultante, incluez simplement la bibliothèque dans le package de distribution.
Téléchargez depuis Maven Central ou depuis la page des versions.
< dependencies >
< dependency >
< groupId >org.xerial</ groupId >
< artifactId >sqlite-jdbc</ artifactId >
< version >3.47.1.0</ version >
</ dependency >
</ dependencies >
Des instantanés de la version de développement sont disponibles dans le référentiel d'instantanés de Sonatype.
Les ressources Maven Central sont signées à l'aide de GPG et les fichiers de signature, se terminant par .asc, sont disponibles au même emplacement que les autres téléchargements.
La clé suivante est actuellement utilisée pour signer les versions :
-----DEBUT DU BLOC DE CLÉ PUBLIQUE PGP----- Commentaire: C1CB A75E C9BD 0BAF 8061 9354 59E0 5CE6 1818 7ED4 Commentaire : Taro L. Saito (pour les actions GitHub) <[email protected]> xjMEYuRVGhYJKwYBBAHaRw8BAQdA2Dp4m1Yhtb1g94pQzzL24FuP6b9KXF8lP9Dh hZnynhfNM1Rhcm8gTC4gU2FpdG8gKEZvciBHaXRIdWIgQWN0aW9ucykgPGxlb0B4 ZXJpYWwub3JnPsKUBBMWCgA8FiEEwcunXsm9C6+AYZNUWeBc5hgYftQFAmLkVRoC GwMFCwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEFngXOYYGH7UfPwBAK7x TVRebZeWcAwmGaMUsbg7SgJou8xnkhByObPLUC/4AQDPsZeYmi4KXyXPzmqhCicd Y+ZSJWIDQqitK2ujPDFXA844BGLkVRoSCisGAQQBl1UBBQEBB0Atu9kejBi+6wfO T0a9z/LYEEdNXM/VX6xt1onKToPPdQMBCAfCeAQYFgoAIBYhBMHLp17JvQuvgGGT VFngXOYYGH7UBQJi5FUaAhsMAAoJEFngXOYYGH7UlMABAKyRCazhVyUFg5FOpAnm ckBY38CaMGPPLXVyY8Kr6dYFAP9wYLu7nsDZCOXkAgS+et4Pk1WZCggoYUkxsX1o 0KZXBQ== =Comment -----FIN DU BLOC DE CLÉ PUBLIQUE PGP-----
La version du projet suit la version de la bibliothèque SQLite fournie dans le fichier jar, avec un chiffre supplémentaire pour indiquer l'incrément du projet.
Par exemple, si la version SQLite est 3.39.2
, la version du projet sera 3.39.2.x
, où x
commence à 0 et s'incrémente à chaque version qui ne modifie pas la version SQLite.
Si la version SQLite est mise à jour vers 3.40.0
, la version du projet sera mise à jour vers 3.40.0.0
.
Vous devrez peut-être ajouter un transformateur de plugin shade pour résoudre le problème 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 >
Nous recherchons toujours :
Réviseurs pour les problèmes ou les PR, vous pouvez vérifier
Contributeurs à soumettre des PR, vous pouvez vérifier et
Veuillez lire notre guide de contribution.