SQLite JDBC es una biblioteca para acceder y crear archivos de bases de datos SQLite en Java.
Nuestra biblioteca SQLiteJDBC no requiere configuración, ya que las bibliotecas nativas para los principales sistemas operativos, incluidos Windows, macOS, Linux, etc., se ensamblan en un único archivo JAR (Java Archive).
El proyecto se mantiene, pero no se desarrolla activamente:
Seguimos cada nueva versión de SQLite y lanzaremos una versión correspondiente de nuestro controlador.
Los errores serán investigados y corregidos si es posible.
Las nuevas funciones están impulsadas por solicitudes de extracción.
El mantenedor actual del proyecto es Gotson.
➡️ Hay más ejemplos de uso y configuración disponibles en USAGE.md
SQLite JDBC es una biblioteca para acceder a bases de datos SQLite a través de la API JDBC. Para conocer el uso general de JDBC, consulte el Tutorial de JDBC o la Documentación de Oracle JDBC.
Descargue sqlite-jdbc-3.47.1.0.jar
y luego agregue este archivo jar a su classpath.
Abra una conexión de base de datos SQLite desde su código. (ver el ejemplo a continuación)
Suponiendo que sqlite-jdbc-3.47.1.0.jar
esté ubicado en el directorio actual.
> javac Sample.java
> java -classpath " .;sqlite-jdbc-3.47.1.0.jar " Sample # in Windows
or
> java -classpath " .:sqlite-jdbc-3.47.1.0.jar " Sample # in macOS or Linux
name = leo
id = 1
name = yui
id = 2
import java . sql . Connection ;
import java . sql . DriverManager ;
import java . sql . ResultSet ;
import java . sql . SQLException ;
import java . sql . Statement ;
public class Sample
{
public static void main ( String [] args )
{
// NOTE: Connection and Statement are AutoCloseable.
// Don't forget to close them both in order to avoid leaks.
try
(
// create a database connection
Connection connection = DriverManager . getConnection ( "jdbc:sqlite:sample.db" );
Statement statement = connection . createStatement ();
)
{
statement . setQueryTimeout ( 30 ); // set timeout to 30 sec.
statement . executeUpdate ( "drop table if exists person" );
statement . executeUpdate ( "create table person (id integer, name string)" );
statement . executeUpdate ( "insert into person values(1, 'leo')" );
statement . executeUpdate ( "insert into person values(2, 'yui')" );
ResultSet rs = statement . executeQuery ( "select * from person" );
while ( rs . next ())
{
// read the result set
System . out . println ( "name = " + rs . getString ( "name" ));
System . out . println ( "id = " + rs . getInt ( "id" ));
}
}
catch ( SQLException e )
{
// if the error message is "out of memory",
// it probably means no database file is found
e . printStackTrace ( System . err );
}
}
}
Nuestro paquete de controladores SQLite JDBC (es decir, sqlite-jdbc-3.47.1.0.jar
) contiene tres tipos de bibliotecas SQLite nativas ( sqlitejdbc.dll
, sqlitejdbc.dylib
, sqlitejdbc.so
), cada una de ellas está compilada para Windows, macOS y Linux. . Un archivo de biblioteca nativo apropiado se extrae automáticamente en la carpeta temporal de su sistema operativo, cuando su programa carga el controlador org.sqlite.JDBC
.
Desde sqlite-jdbc-3.6.19, los motores SQLite compilados de forma nativa se utilizarán para los siguientes sistemas operativos:
x86 | x86_64 | brazov5 | armv6 | armv7 | brazo64 | ppc64 | riscv64 | |
---|---|---|---|---|---|---|---|---|
ventanas | ✔ | ✔ | ✔ | ✔ | ||||
macos | ✔ | ✔ | ||||||
Linux (libc) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Linux (musl) | ✔ | ✔ | ✔ | |||||
Android (Nivel API 24+) | ✔ | ✔ | ✔ | ✔ | ||||
FreeBSD | ✔ | ✔ | ✔ |
En los otros sistemas operativos que no figuran en la lista anterior, se utiliza SQLite puro de Java. (Aplica a versiones anteriores a la 3.7.15)
Si desea utilizar la biblioteca nativa para su sistema operativo, cree la fuente desde cero.
Sqlite JDBC admite la imagen nativa de GraalVM lista para usar a partir de la versión 3.40.1.0. Ha habido soporte rudimentario para algunas versiones antes de eso, pero CI no lo probó activamente.
De forma predeterminada, la biblioteca sqlitejdbc
para el destino de compilación se incluirá en la imagen nativa, acompañada de la configuración JNI requerida. En tiempo de ejecución, esta biblioteca se extraerá a la carpeta temporal y se cargará desde allí. Sin embargo, para un inicio más rápido, se recomienda configurar la propiedad org.sqlite.lib.exportPath
en el momento de la compilación. Esto exportará la biblioteca sqlitejdbc
en el momento de la compilación al directorio especificado y la biblioteca no se incluirá como recurso. Como resultado, la imagen nativa en sí será un poco más pequeña y se elimina la sobrecarga de exportar la biblioteca en tiempo de ejecución, pero debe asegurarse de que la biblioteca se pueda encontrar en tiempo de ejecución. La mejor manera de hacerlo es simplemente colocar la biblioteca al lado del ejecutable.
native-image -Dorg.sqlite.lib.exportPath= ~ /outDir -H:Path= ~ /outDir -cp foo.jar org.example.Main
Esto colocará tanto la biblioteca compartida sqlitejdbc
como la salida de la imagen nativa en la carpeta ~/outDir
.
Este ejemplo utiliza el complemento Maven de herramientas de compilación nativa:
< plugin >
< groupId >org.graalvm.buildtools</ groupId >
< artifactId >native-maven-plugin</ artifactId >
< configuration >
< buildArgs >
< buildArg >-Dorg.sqlite.lib.exportPath=${project.build.directory}</ buildArg >
</ buildArgs >
</ configuration >
</ plugin >
Esto colocará automáticamente la biblioteca sqlitejdbc
en la carpeta /target
de su proyecto, creando un entorno de ejecución funcional. Al empaquetar la aplicación resultante, simplemente incluya la biblioteca en el paquete de distribución.
Descárguelo desde Maven Central o desde la página de lanzamientos.
< dependencies >
< dependency >
< groupId >org.xerial</ groupId >
< artifactId >sqlite-jdbc</ artifactId >
< version >3.47.1.0</ version >
</ dependency >
</ dependencies >
Las instantáneas de la versión de desarrollo están disponibles en el repositorio de instantáneas de Sonatype.
Los recursos de Maven Central están firmados mediante GPG y los archivos de firma, que terminan en .asc, están disponibles en la misma ubicación que las otras descargas.
Actualmente se utiliza la siguiente clave para firmar autorizaciones:
-----COMENZAR BLOQUE DE LLAVE PÚBLICA PGP----- Comentario: C1CB A75E C9BD 0BAF 8061 9354 59E0 5CE6 1818 7ED4 Comentario: Taro L. Saito (para acciones de GitHub) <[email protected]> xjMEYuRVGhYJKwYBBAHaRw8BAQdA2Dp4m1Yhtb1g94pQzzL24FuP6b9KXF8lP9Dh hZnynhfNM1Rhcm8gTC4gU2FpdG8gKEZvciBHaXRIdWIgQWN0aW9ucykgPGxlb0B4 ZXJpYWwub3JnPsKUBBMWCgA8FiEEwcunXsm9C6+AYZNUWeBc5hgYftQFAmLkVRoC GwMFCwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEFngXOYYGH7UfPwBAK7x TVRebZeWcAwmGaMUsbg7SgJou8xnkhByObPLUC/4AQDPsZeYmi4KXyXPzmqhCicd Y+ZSJWIDQqitK2ujPDFXA844BGLkVRoSCisGAQQBl1UBBQEBB0Atu9kejBi+6wfO T0a9z/LYEEdNXM/VX6xt1onKToPPdQMBCAfCeAQYFgoAIBYhBMHLp17JvQuvgGGT VFngXOYYGH7UBQJi5FUaAhsMAAoJEFngXOYYGH7UlMABAKyRCazhVyUFg5FOpAnm ckBY38CaMGPPLXVyY8Kr6dYFAP9wYLu7nsDZCOXkAgS+et4Pk1WZCggoYUkxsX1o 0KZXBQ== =Wyas -----FIN DEL BLOQUE DE LLAVE PÚBLICA PGP-----
La versión del proyecto sigue la versión de la biblioteca SQLite incluida en el jar, con un dígito adicional para indicar el incremento del proyecto.
Por ejemplo, si la versión de SQLite es 3.39.2
, la versión del proyecto será 3.39.2.x
, donde x
comienza en 0 y aumenta con cada versión que no cambia la versión de SQLite.
Si la versión de SQLite se actualiza a 3.40.0
, la versión del proyecto se actualizará a 3.40.0.0
.
Es posible que deba agregar el transformador del complemento de sombra para resolver el problema No suitable driver found for jdbc:sqlite:
< transformer
implementation= " org.apache.maven.plugins.shade.resource.AppendingTransformer " >
< resource >META-INF/services/java.sql.Driver</ resource >
</ transformer >
< dependency >
< groupId >org.xerial</ groupId >
< artifactId >sqlite-jdbc</ artifactId >
< version >3.47.1.0</ version >
</ dependency >
Siempre estamos buscando:
Revisores de problemas o relaciones públicas, puede consultar
Contribuyentes para enviar relaciones públicas, puede consultar y
Lea nuestra guía de contribuciones.