Question

Je suis attiré par la netteté qu'offre une base de données à fichier unique.Quelle bibliothèque de pilotes/connecteurs existe pour se connecter et utiliser SQLite avec Java.

J'ai découvert une bibliothèque wrapper, http://www.ch-werner.de/javasqlite, mais existe-t-il d’autres projets plus importants disponibles ?

Était-ce utile?

La solution

Le wiki répertorie quelques wrappers supplémentaires :

Autres conseils

J'ai trouvé votre question en recherchant des informations avec SQLite et Java.Je pensais juste ajouter ma réponse que j'ai également publiée sur mon Blog.

Je code en Java depuis un moment maintenant.Je connais également SQLite mais je ne l'ai jamais utilisé… Eh bien, je l'ai utilisé via d'autres applications mais jamais dans une application que j'ai codée.J'en avais donc besoin pour un projet cette semaine et c'est tellement simple d'utilisation !

J'ai trouvé un pilote Java JDBC pour SQLite.Ajoutez simplement le Fichier JAR dans votre chemin de classe et importez java.sql.*

Son application de test créera un fichier de base de données, enverra des commandes SQL pour créer une table, stockera certaines données dans la table, les relira et les affichera sur la console.Il créera le test.db fichier dans le répertoire racine du projet.Vous pouvez exécuter cet exemple avec 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();
    }
  }

Je comprends que vous ayez posé une question spécifique sur SQLite, mais peut-être Base de données HSQL serait mieux adapté à Java.Il est écrit en Java lui-même, s'exécute dans la JVM, prend en charge les tables en mémoire, etc.et toutes ces fonctionnalités le rendent tout à fait utilisable pour le prototypage et les tests unitaires.

Il y a un nouveau projet SQLJet il s'agit d'une implémentation purement Java de SQLite.Il ne prend pas encore en charge toutes les fonctionnalités de SQLite, mais peut constituer une très bonne option pour certains projets Java fonctionnant avec des bases de données SQLite.

Le projet David Crawshaw(sqlitejdbc-v056.jar) semble obsolète et la dernière mise à jour date du 20 juin 2009, source ici

je recommanderais Fourche Xerials du wrapper Crawshaw sqlite.J'ai remplacé sqlitejdbc-v056.jar par le fichier Xerials sqlite-jdbc-3.7.2.jar sans aucun problème.

Utilise la même syntaxe que dans La réponse de Bernie et est beaucoup plus rapide et avec la dernière bibliothèque SQLite.

Qu'est-ce qui est différent du JDBC SQLite de Zentus ?

Le pilote SQLite JDBC d'origine de Zentus http://www.zentus.com/sqlitejdbc/ lui-même est un excellent utilitaire pour utiliser les bases de données SQLite à partir de la langue Java, et notre bibliothèque SQLiteJDBC repose également sur son implémentation.Cependant, sa version pure-java, qui traduit totalement les codes C / C ++ de SQLite en Java, est considérablement plus lente par rapport à sa version native, qui utilise des binaires SQLite compilés pour chaque système d'exploitation (Win, Mac, Linux).

Pour utiliser la version native de SQLite-JDBC, l'utilisateur a dû définir un chemin d'accès aux codes natifs (DLL, JNILIB, donc les fichiers, qui sont des programmes JNDI C) en utilisant des arguments de ligne de commande, par exemple, -djava.library.path = (Chemin vers la DLL, Jnilib, etc.) ou -dorg.sqlite.lib.path, etc.Ce processus était sujet aux erreurs et gênant pour dire à chaque utilisateur de définir ces variables.Notre bibliothèque SQLiteJDBC supprime complètement ces inconvénients.

Une autre différence est que nous gardons cette bibliothèque sqlitejdbc à jour vers la dernière version de SQLite Engine, car nous sommes l'un des utilisateurs les plus chauds de cette bibliothèque.Par exemple, SQLite JDBC est un composant central de la boîte à outils UTGB (University of Tokyo Genome Browser), qui est notre utilité pour créer des navigateurs de génome personnalisés.

MODIFIER :Comme d'habitude, lorsque vous mettez à jour quelque chose, il y aura des problèmes à un endroit obscur de votre code (cela m'est arrivé).Test test test =)

Le message de Bernie est très utile.Je n'ai pas pu voter (je n'ai pas assez de réputation :( ).Mais cela a beaucoup aidé.Juste pour réitérer !

http://www.zentus.com/sqlitejdbc/

Vous trouverez ici le dernier pot SQLite JDBC.Ajoutez simplement le pot dans votre chemin de classe et vous avez terminé !:) Vous pouvez exécuter l'exemple de code de Bernie pour tester si tout va bien.

http://souptonuts.sourceforge.net/readme_sqlite_tutorial.html http://www.sqlite.org/lang.html

Ici vous pouvez trouver de l'aide sur la syntaxe SQL pour SQLite.Bravo à SQLite :)

Lorsque vous compilez et exécutez le code, vous devez définir la valeur des options de chemin de classe.Tout comme ce qui suit :

javac -classpath .;sqlitejdbc-v056.jar Text.java

java -classpath .;sqlitejdbc-v056.jar Text

Veuillez prêter attention à "." Et le SPARATE ";" (Win, le Linux est ":")

Le code sqlitejdbc peut être téléchargé en utilisant git depuis https://github.com/crawshaw/sqlitejdbc.

# git clone https://github.com/crawshaw/sqlitejdbc.git sqlitejdbc
...
# cd sqlitejdbc
# make

Note:Makefile nécessite le binaire curl pour télécharger les bibliothèques/deps sqlite.

L'exemple de code entraîne une fuite de mémoire dans Tomcat (après l'annulation du déploiement de l'application Web, le chargeur de classe reste toujours en mémoire) ce qui entraînera un outofmemory finalement.La façon de le résoudre est d'utiliser le sqlite-jdbc-3.7.8.jar;c'est un instantané, donc il n'apparaît pas encore pour maven.

Faute de frappe: java -cp .:sqlitejdbc-v056.jar Test

devrait être: java -cp .:sqlitejdbc-v056.jar; Test

remarquez le point-virgule après ".jar", j'espère que cela aidera les gens, cela pourrait causer beaucoup de problèmes

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top