Pregunta

Me atrae la pulcritud que proporciona una base de datos de un solo archivo.¿Qué biblioteca de controladores/conectores existe para conectar y usar SQLite con Java?

He descubierto una biblioteca contenedora, http://www.ch-werner.de/javasqlite, pero ¿hay otros proyectos más destacados disponibles?

¿Fue útil?

Solución

El wiki enumera algunos envoltorios más:

Otros consejos

Encontré tu pregunta mientras buscaba información con SQLite y Java.Sólo pensé en agregar mi respuesta, que también publiqué en mi Blog.

He estado codificando en Java por un tiempo.También conocía SQLite pero nunca lo usé... Bueno, lo he usado a través de otros aplicaciones pero nunca en una aplicación que codifiqué.¡Lo necesitaba para un proyecto esta semana y es muy sencillo de usar!

Encontré un controlador Java JDBC para SQLite.Solo agrega el archivo JAR a su classpath e importe java.sql.*

Su aplicación de prueba creará un archivo de base de datos, enviará algunos comandos SQL para crear una tabla, almacenará algunos datos en la tabla, los leerá y los mostrará en la consola.Creará el prueba.db archivo en el directorio raíz del proyecto.Puedes ejecutar este ejemplo 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();
    }
  }

Entiendo que preguntaste específicamente sobre SQLite, pero tal vez base de datos hsql encajaría mejor con Java.Está escrito en Java, se ejecuta en JVM, admite tablas en memoria, etc.y todas esas características lo hacen bastante útil para la creación de prototipos y pruebas unitarias.

Hay un nuevo proyecto SQLJet esa es una implementación Java pura de SQLite.Todavía no es compatible con todas las funciones de SQLite, pero puede ser una muy buena opción para algunos de los proyectos Java que funcionan con bases de datos SQLite.

El proyecto David Crawshaw (sqlitejdbc-v056.jar) parece desactualizado y la última actualización fue el 20 de junio de 2009. fuente aquí

Yo recomendaría tenedor xeriales de envoltorio Crawshaw sqlite.Reemplacé sqlitejdbc-v056.jar con el archivo Xerials sqlite-jdbc-3.7.2.jar sin ningún problema.

Utiliza la misma sintaxis que en la respuesta de bernie y es mucho más rápido y con la última biblioteca sqlite.

¿En qué se diferencia del SQLite JDBC de Zentus?

El controlador SQLite JDBC original de Zentus http://www.zentus.com/sqlitejdbc/ En sí mismo es una excelente utilidad para usar bases de datos SQLite del lenguaje Java, y nuestra biblioteca SQLITEJDBC también se basa en su implementación.Sin embargo, su versión Pure-Java, que traduce totalmente los códigos C/C ++ de SQLite en Java, es significativamente más lenta en comparación con su versión nativa, que utiliza binarios de SQLite compilados para cada sistema operativo (Win, Mac, Linux).

Para usar la versión nativa de SQLite-JDBC, el usuario tuvo que establecer una ruta a los códigos nativos (DLL, Jnilib, SO archivos, que son programas JNDI C) utilizando argumentos de línea de comandos, por ejemplo, -djava.library.path = (camino a la dll, jnilib, etc.), o -dorg.sqlite.lib.path, etc.Este proceso fue propenso a errores y molesto para decirle a cada usuario que establezca estas variables.Nuestra biblioteca SQLiteJDBC elimina por completo estos inconvenientes.

Otra diferencia es que mantenemos este Libray SQLITEJDBC actualizado a la versión más reciente de SQLite Engine, porque somos uno de los usuarios más populares de esta biblioteca.Por ejemplo, Sqlite JDBC es un componente central del kit de herramientas de UTGB (Universidad de Genoma de la Universidad de Tokio), que es nuestra utilidad para crear navegadores de genoma personalizados.

EDITAR :Como es habitual cuando actualizas algo, habrá problemas en algún lugar oscuro de tu código (me pasó a mí).Prueba prueba prueba =)

La publicación de Bernie es muy útil.No pude votar (no tengo suficiente reputación :()).Pero ayudó mucho.¡Solo para reiterar!

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

Aquí puede encontrar el último jar SQLite JDBC.¡Simplemente agregue el frasco a su classpath y listo!:) Puedes ejecutar el código de muestra de Bernie para probar si todo está bien.

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

Aquí puede encontrar ayuda sobre la sintaxis SQL para SQLite.Saludos a SQLite :)

Cuando compila y ejecuta el código, debe establecer el valor de las opciones de classpath.Como el siguiente:

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

java -classpath .;sqlitejdbc-v056.jar Text

Por favor, preste atención a "." y el Spare ";" (Gana, el Linux es ":")

El código sqlitejdbc se puede descargar usando git desde https://github.com/crawshaw/sqlitejdbc.

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

Nota:Makefile requiere curl binario para descargar bibliotecas/deps de sqlite.

El código de ejemplo provoca una pérdida de memoria en Tomcat (después de anular la implementación de la aplicación web, el cargador de clases aún permanece en la memoria), lo que provocará un error. outofmemory eventualmente.La forma de solucionarlo es utilizar el sqlite-jdbc-3.7.8.jar;Es una instantánea, por lo que aún no aparece para Maven.

Error de tipografía: java -cp .:sqlitejdbc-v056.jar Test

debiera ser: java -cp .:sqlitejdbc-v056.jar; Test

Observe el punto y coma después de ".jar". Espero que ayude a la gente, podría causar muchos problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top