Domanda

Sono attratto dalla pulizia fornita da un database a file singolo.Quale libreria di driver/connettori è disponibile per connettere e utilizzare SQLite con Java.

Ho scoperto una libreria wrapper, http://www.ch-werner.de/javasqlite, ma ci sono altri progetti più importanti disponibili?

È stato utile?

Soluzione

IL wiki elenca alcuni altri wrapper:

Altri suggerimenti

Ho trovato la tua domanda mentre cercavo informazioni con SQLite e Giava.Ho solo pensato di aggiungere la mia risposta che ho pubblicato anche sul mio blog.

Sto programmando in Java ormai da un po'.Conoscevo anche SQLite ma non l'ho mai usato... Beh, l'ho usato con altri applicazioni ma mai in un'app che ho codificato.Quindi ne avevo bisogno per un progetto questa settimana ed è così semplice da usare!

Ho trovato un driver Java JDBC per SQLite.Basta aggiungere il File JAR al tuo classpath e importa java.sql.*

La sua app di test creerà un file di database, invierà alcuni comandi SQL per creare una tabella, memorizzerà alcuni dati nella tabella, li rileggerà e li visualizzerà sulla console.Creerà il prova.db file nella directory principale del progetto.Puoi eseguire questo esempio con 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();
    }
  }

Capisco che tu abbia chiesto specificamente di SQLite, ma forse Base di dati HSQL sarebbe più adatto a Java.È scritto in Java stesso, viene eseguito nella JVM, supporta tabelle in memoria, ecc.e tutte queste caratteristiche lo rendono abbastanza utilizzabile per la prototipazione e i test unitari.

C'è un nuovo progetto SQLJet questa è una pura implementazione Java di SQLite.Non supporta ancora tutte le funzionalità di SQLite, ma potrebbe essere un'ottima opzione per alcuni progetti Java che funzionano con i database SQLite.

Il progetto David Crawshaw (sqlitejdbc-v056.jar) sembra obsoleto e l'ultimo aggiornamento è stato il 20 giugno 2009, fonte qui

Lo consiglierei Forcella Xeriali del wrapper Crawshaw sqlite.Ho sostituito sqlitejdbc-v056.jar con il file Xerials sqlite-jdbc-3.7.2.jar senza alcun problema.

Utilizza la stessa sintassi di in La risposta di Bernie ed è molto più veloce e con l'ultima libreria sqlite.

Cosa c'è di diverso da SQLite JDBC di Zentus?

Il driver JDBC SQLite originale di Zentus http://www.zentus.com/sqlitejdbc/ stessa è un'ottima utilità per l'utilizzo di database SQLite dalla lingua Java e anche la nostra libreria SQLiteJDBC si basa sulla sua implementazione.Tuttavia, la sua versione pura-java, che traduce totalmente i codici C/C ++ di SQLite in Java, è significativamente più lenta rispetto alla sua versione nativa, che utilizza binari SQLite compilati per ciascun sistema operativo (Win, Mac, Linux).

Per utilizzare la versione nativa di SQLite-JDBC, l'utente ha dovuto impostare un percorso verso i codici nativi (DLL, JniLib, SO file, che sono programmi JNDI C) utilizzando argomenti di comando, ad esempio, -djava.library.path = per (Path to the dll, jnilib, ecc.) o -dorg.sqlite.lib.Path, ecc.Questo processo era soggetto a errori e fastidiosi per dire a ogni utente di impostare queste variabili.La nostra libreria SQLiteJDBC elimina completamente questi inconvenienti.

Un'altra differenza è che stiamo mantenendo questo Libray SQLiteJDBC aggiornato alla versione più recente del motore SQLite, perché siamo uno degli utenti più in voga di questa libreria.Ad esempio, SQLite JDBC è un componente principale del toolkit UTGB (University of Tokyo Genome Browser), che è la nostra utilità per creare browser genomici personalizzati.

MODIFICARE :Come al solito quando aggiorni qualcosa, ci saranno problemi in qualche punto oscuro del tuo codice (è successo a me).Prova prova prova =)

Il post di Bernie è molto utile.Impossibile votare (non ho abbastanza reputazione :()).Ma ha aiutato molto.Giusto per ribadire!

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

Qui puoi trovare l'ultimo jar JDBC SQLite.Basta aggiungere il barattolo nel tuo percorso di classe e il gioco è fatto!:) Puoi eseguire il codice di esempio di Bernie per verificare se tutto va bene.

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

Qui puoi trovare aiuto sulla sintassi SQL per SQLite.Saluti a SQLite :)

Quando compili ed esegui il codice, dovresti impostare il valore delle opzioni classpath.Proprio come il seguente:

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

java -classpath .;sqlitejdbc-v056.jar Text

Si prega di prestare attenzione a "". e lo sparate ";" (vinci, il linux è ":")

Il codice sqlitejdbc può essere scaricato utilizzando git da https://github.com/crawshaw/sqlitejdbc.

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

Nota:Makefile richiede il binario curl per scaricare librerie/deps sqlite.

Il codice di esempio porta a una perdita di memoria in Tomcat (dopo aver annullato la distribuzione della webapp, il classloader rimane ancora in memoria) che causerà un errore outofmemory infine.Il modo per risolverlo è usare il file sqlite-jdbc-3.7.8.jar;è un'istantanea, quindi non viene ancora visualizzata per Maven.

Errore di battitura: java -cp .:sqlitejdbc-v056.jar Test

dovrebbe essere: java -cp .:sqlitejdbc-v056.jar; Test

nota il punto e virgola dopo ".jar", spero che aiuti le persone, potrebbe causare molti problemi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top