update statement prepared not example create java sqlite

statement - Java y SQLite



sqlite prepared statement java (10)

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 de envoltorios, http://www.ch-werner.de/javasqlite , pero ¿hay otros proyectos más destacados disponibles?


Cuando compile y ejecute el código, debe establecer el valor de las opciones de classpath. Al igual que lo siguiente:

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

Por favor, preste atención a "." y el sparate ";" (ganar, el linux es ":")


El código de ejemplo conduce a una pérdida de memoria en Tomcat (después de desinstalar la aplicación web, el cargador de clases aún permanece en la memoria), lo que causará una memoria fuera de memoria. La forma de resolverlo es usar sqlite-jdbc-3.7.8.jar ; Es una instantánea, por lo que todavía no aparece para Maven.


El código de 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 binary para descargar las bibliotecas / deps de sqlite.


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

xerial.org/trac/Xerial/wiki/SQLiteJDBC de Crawshaw sqlite wrapper. Reemplacé el archivo sqlitejdbc-v056.jar con Xerials sqlite-jdbc-3.7.2.jar sin ningún problema.

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

¿Qué es diferente de SQLite JDBC de Zentus?

El controlador JDBC SQLite original de Zentus, http://www.zentus.com/sqlitejdbc/ sí mismo, es una excelente utilidad para usar bases de datos SQLite desde el lenguaje Java, y nuestra biblioteca SQLiteJDBC también se basa en su implementación. Sin embargo, su versión de Java puro, que traduce totalmente los códigos c / c ++ de SQLite a 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 tenía que establecer una ruta a los códigos nativos (dll, jnilib, así que los archivos, que son programas JNDI C) usando argumentos de la línea de comandos, por ejemplo, -Djava.library.path = (ruta a la dll, jnilib, etc.), o -Dorg.sqlite.lib.path, etc. Este proceso fue propenso a errores y molesto al decirle a cada usuario que establezca estas variables. Nuestra biblioteca SQLiteJDBC elimina por completo estos inconvenientes.

Otra diferencia es que estamos manteniendo esta versión de SQLiteJDBC actualizada a la versión más reciente del motor SQLite, porque somos uno de los usuarios más populares de esta biblioteca. Por ejemplo, SQLite JDBC es un componente central de UTGB (University of Tokyo Genome Browser) Toolkit, que es nuestra utilidad para crear navegadores de genoma personalizados.

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


Encontré tu pregunta mientras buscaba información con SQLite y Java. Solo pensé en añadir mi respuesta, que también publiqué en mi blog .

He estado codificando en Java por un tiempo ahora. También conocía SQLite pero nunca lo usé ... Bueno, lo he usado a través de otras applications pero nunca en una aplicación que codifiqué. ¡Así que lo necesitaba para un proyecto esta semana y es tan simple de usar!

Encontré un controlador JDBC de Java para SQLite. Solo agregue el https://github.com/xerial/sqlite-jdbc 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 y los leerá y mostrará en la consola. Creará el archivo test.db en el directorio raíz del proyecto. Puede 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 ha preguntado específicamente sobre SQLite, pero tal vez la base de datos HSQL sería una mejor opción para Java. Está escrito en Java, se ejecuta en la JVM, admite tablas en memoria, etc. y todas sus características lo hacen bastante útil para la creación de prototipos y pruebas de unidades.


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


La wiki enumera algunos más envoltorios:


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

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

Aquí puedes encontrar la última versión de SQLite JDBC jar. ¡Solo agrega el frasco en tu ruta de clase y listo! :) Puede ejecutar el código de muestra de Bernie para comprobar 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 de SQL para SQLite. Saludos a SQLite :)


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

debería ser: java -cp .:sqlitejdbc-v056.jar; Test java -cp .:sqlitejdbc-v056.jar; Test

note el punto y coma después de ".jar" espero que ayude a la gente, podría causar una gran cantidad de problemas