328 votes

Java et SQLite

Je suis attiré par la propreté qui fournit un seul fichier de base de données. Quelle bibliothèque pilote/connecteur est là pour se connecter et utiliser SQLite avec Java.

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

245voto

Bernie Perez Points 5091

Hey, j'ai trouvé votre question lors de la recherche de l'information avec SQLite et Java. Juste pensé que je voudrais ajouter ma réponse que j'ai aussi posté sur mon blog.

J'ai été le codage en Java pour un certain temps maintenant. J'ai aussi connu sur SQLite, mais jamais utilisé... eh Bien je l'ai utilisé par d'autres applications , mais jamais dans une application que j'ai codé. Si j'en avais besoin pour un projet de cette semaine et c'est tellement simple à utiliser!

D'abord j'ai trouvé le site de David Crawshaw qui a un Java JDBC driver pour SQLite. Juste ajouter son fichier JAR au classpath et importer java.sql.*

Son application de test permettra de créer un fichier de base de données, envoyer des commandes SQL pour créer une table, stocker des données dans la table, et de lire et d'afficher sur la console. Il va créer 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();
    }
  }

196voto

Peter Hoffmann Points 13823

Le wiki des listes de certains plus wrappers:

30voto

javashlook Points 4800

Je comprends que vous avez demandé spécifiquement de SQLite, mais peut-être que la base de données HSQL serait un meilleur ajustement avec Java. Il est écrit en Java lui-même, s’exécute dans la machine virtuelle Java, prend en charge les tables en mémoire etc. et tout ce qui rend tout à fait utilisable de prototypage et de tests unitaires.

18voto

Daniel Magnusson Points 2945

David Crawshaw projet(sqlitejdbc-v056.jar semble de la date de la dernière mise à jour a été Jun 20, 2009, source ici

Je conseille Xerials fourche de Crawshaw sqlite wrapper. J'ai remplacé sqlitejdbc-v056.jar avec Xerials sqlite-jdbc-3.7.2.jar fichier sans aucun problème.

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

Ce qui est différent de Zentus de SQLite JDBC?

L'original Zentus de SQLite pilote JDBC http://www.zentus.com/sqlitejdbc/ lui-même est un excellent utilitaire pour à l'aide de bases de données SQLite à partir de la langue de Java, et notre SQLiteJDBC bibliothèque s'appuie également sur sa mise en œuvre. Cependant, son pur-version de java, totalement traduit en c/c++ codes de SQLite en Java, est beaucoup plus lent par rapport à sa version native, qui utilise SQLite les binaires compilés pour chaque OS (win, mac, linux).

Pour utiliser la version native de sqlite-jdbc, l'utilisateur devait définir un chemin d'accès à le natif de codes (dll, jnilib, et donc les fichiers, qui sont JNDI programmes en C) par en utilisant des arguments de ligne de commande, par exemple, -Djava.de la bibliothèque.path=(chemin d'accès à la dll, jnilib, etc.), ou -Dorg.sqlite.lib.chemin d'accès, etc. Ce processus a été et sujettes à erreur de gênant à dire à chaque utilisateur de définir ces variables. Notre SQLiteJDBC bibliothèque complètement fait disparaître ces inconvénients.

Une autre différence est que nous sommes en gardant cette SQLiteJDBC bibliothèque up-to-date de la dernière version de SQLite moteur, parce que nous sommes un la plus chaude des usagers de cette bibliothèque. Par exemple, SQLite JDBC est une composant de base de UTGB (Université de Tokyo Navigateur du Génome) boîte à outils, qui est notre utilitaire pour créer des navigateurs génome.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X