Frage

Mich fasziniert die Übersichtlichkeit, die eine Datenbank mit nur einer Datei bietet.Welche Treiber-/Connector-Bibliothek gibt es, um SQLite mit Java zu verbinden und zu verwenden?

Ich habe eine Wrapper-Bibliothek entdeckt, http://www.ch-werner.de/javasqlite, aber gibt es noch andere prominentere Projekte?

War es hilfreich?

Lösung

Der Wiki listet einige weitere Wrapper auf:

Andere Tipps

Ich habe Ihre Frage gefunden, als ich nach Informationen gesucht habe SQLite und Java.Ich dachte nur, ich füge meine Antwort hinzu, die ich auch auf meinem gepostet habe Blog.

Ich programmiere jetzt schon seit einiger Zeit in Java.Ich kannte SQLite auch, habe es aber nie verwendet ... Nun, ich habe es über andere verwendet Anwendungen aber niemals in einer App, die ich codiert habe.Ich brauchte es also diese Woche für ein Projekt und es ist so einfach zu verwenden!

Ich habe einen Java JDBC-Treiber für SQLite gefunden.Fügen Sie einfach das hinzu JAR-Datei zu Ihrem Klassenpfad hinzufügen und java.sql importieren.*

Seine Test-App erstellt eine Datenbankdatei, sendet einige SQL-Befehle zum Erstellen einer Tabelle, speichert einige Daten in der Tabelle, liest sie zurück und zeigt sie auf der Konsole an.Es wird das erstellt test.db Datei im Stammverzeichnis des Projekts.Sie können dieses Beispiel mit ausführen 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();
    }
  }

Ich verstehe, dass Sie speziell nach SQLite gefragt haben, aber vielleicht HSQL-Datenbank würde besser zu Java passen.Es ist in Java selbst geschrieben, läuft in der JVM, unterstützt In-Memory-Tabellen usw.Und all diese Funktionen machen es für Prototyping und Unit-Tests gut geeignet.

Es gibt ein neues Projekt SQLJet Das ist eine reine Java-Implementierung von SQLite.Es unterstützt noch nicht alle SQLite-Funktionen, ist aber möglicherweise eine sehr gute Option für einige Java-Projekte, die mit SQLite-Datenbanken arbeiten.

Das David Crawshaw-Projekt (sqlitejdbc-v056.jar) scheint veraltet zu sein und die letzte Aktualisierung erfolgte am 20. Juni 2009. Quelle hier

Ich würde es empfehlen Xerials-Gabel des Crawshaw-SQLite-Wrappers.Ich habe sqlitejdbc-v056.jar ohne Probleme durch die Datei sqlite-jdbc-3.7.2.jar von Xerials ersetzt.

Verwendet dieselbe Syntax wie in Bernies Antwort und ist viel schneller und mit der neuesten SQLite-Bibliothek.

Was ist der Unterschied zum SQLite JDBC von Zentus?

Der ursprüngliche SQLite-JDBC-Treiber von Zentus http://www.zentus.com/sqlitejdbc/ selbst ist ein ausgezeichnetes Dienstprogramm für die Verwendung von SQLite -Datenbanken aus der Java -Sprache, und unsere SQLiteJDBC -Bibliothek stützt sich auch auf der Implementierung.Die Pure-Java-Version, die C/C ++-Codes von SQLite in Java vollständig übersetzt, ist im Vergleich zu seiner nativen Version deutlich langsamer, die für jedes Betriebssystem (Win, Mac, Linux) SQLite-Binärdateien verwendet.

Um die native Version von SQLite-JDBC zu verwenden, musste der Benutzer einen Pfad zu den nativen Codes (DLL, JNILIB, SO-Dateien, die JNDI-C-Programme) unter Verwendung von Befehlszeilenargumenten, z. (Pfad zur DLL, Jnilib usw.) oder -dorg.sqlite.lib.Path usw.Dieser Prozess war fehleranfällig und störend, um jedem Benutzer zu sagen, dass er diese Variablen festlegen soll.Unsere SQLiteJDBC-Bibliothek beseitigt diese Unannehmlichkeiten vollständig.

Ein weiterer Unterschied besteht darin, dass wir diesen SQLiteJDBC Libray auf der neuesten Version der SQLite-Engine auf dem neuesten Stand halten, da wir einer der heißesten Benutzer dieser Bibliothek sind.Beispielsweise ist SQLite JDBC ein Kernkomponente des UTGB -Toolkits (University of Tokyo Genome Browser), das unser Dienstprogramm ist, um personalisierte Genombrowser zu erstellen.

BEARBEITEN :Wie üblich, wenn Sie etwas aktualisieren, wird es an einer unbekannten Stelle in Ihrem Code Probleme geben (das ist mir passiert).Test Test Test =)

Bernies Beitrag ist sehr hilfreich.Konnte nicht abstimmen (habe nicht genug Ruf :( ).Aber es hat sehr geholfen.Nur zur Wiederholung!

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

Hier finden Sie das neueste SQLite JDBC-JAR.Fügen Sie einfach das Glas zu Ihrem Klassenpfad hinzu und schon sind Sie fertig!:) Sie können Bernies Beispielcode ausführen, um zu testen, ob alles in Ordnung ist.

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

Hier finden Sie Hilfe zur SQL-Syntax für SQLite.Ein Hoch auf SQLite :)

Wenn Sie den Code kompilieren und ausführen, sollten Sie den Wert der Klassenpfadoptionen festlegen.Genau wie das Folgende:

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

java -classpath .;sqlitejdbc-v056.jar Text

Achten Sie bitte auf "." und der Sparat ";" (Win, das Linux ist ":")

sqlitejdbc-Code kann mit git von heruntergeladen werden https://github.com/crawshaw/sqlitejdbc.

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

Notiz:Makefile erfordert Curl-Binärdatei, um SQLite-Bibliotheken/-Deps herunterzuladen.

Der Beispielcode führt zu einem Speicherverlust in Tomcat (nach dem Deployment der Webanwendung verbleibt der Klassenlader immer noch im Speicher), der einen Fehler verursacht outofmemory letztlich.Der Weg, es zu lösen, besteht darin, das zu verwenden sqlite-jdbc-3.7.8.jar;Es ist eine Momentaufnahme und wird daher für Maven noch nicht angezeigt.

Tippfehler: java -cp .:sqlitejdbc-v056.jar Test

sollte sein: java -cp .:sqlitejdbc-v056.jar; Test

Beachten Sie das Semikolon nach „.jar“. Ich hoffe, das hilft den Leuten, könnte viel Ärger verursachen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top