SQLite JDBC — это библиотека для доступа и создания файлов базы данных SQLite на Java.
Наша библиотека SQLiteJDBC не требует настройки, поскольку собственные библиотеки для основных ОС, включая Windows, macOS, Linux и т. д., собраны в один файл JAR (Java Archive).
Проект поддерживается, но активно не развивается:
Мы следим за каждой новой версией SQLite и будем выпускать соответствующую версию нашего драйвера.
Ошибки будут исследованы и по возможности исправлены.
Новые функции создаются на основе запросов на включение.
Текущий сопровождающий проекта — gotson.
➡️ Дополнительные примеры использования и настройки доступны на USAGE.md.
SQLite JDBC — это библиотека для доступа к базам данных SQLite через API JDBC. Общие сведения об использовании JDBC см. в Учебном руководстве по JDBC или в документации Oracle JDBC.
Загрузите sqlite-jdbc-3.47.1.0.jar
затем добавьте этот jar-файл в свой путь к классам.
Откройте соединение с базой данных SQLite из вашего кода. (см. пример ниже)
Предполагается, что sqlite-jdbc-3.47.1.0.jar
находится в текущем каталоге.
> 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 );
}
}
}
Наш пакет драйверов SQLite JDBC (т. е. sqlite-jdbc-3.47.1.0.jar
) содержит три типа собственных библиотек SQLite ( sqlitejdbc.dll
, sqlitejdbc.dylib
, sqlitejdbc.so
), каждая из которых скомпилирована для Windows, macOS и Linux. . Соответствующий файл собственной библиотеки автоматически извлекается во временную папку вашей ОС, когда ваша программа загружает драйвер org.sqlite.JDBC
.
Начиная с sqlite-jdbc-3.6.19, скомпилированные в собственном коде механизмы SQLite будут использоваться для следующих операционных систем:
х86 | x86_64 | Armv5 | Armv6 | Armv7 | рука64 | ppc64 | рискв64 | |
---|---|---|---|---|---|---|---|---|
Окна | ✔ | ✔ | ✔ | ✔ | ||||
macOS | ✔ | ✔ | ||||||
Linux (библиотека) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Linux (мусл) | ✔ | ✔ | ✔ | |||||
Android (уровень API 24+) | ✔ | ✔ | ✔ | ✔ | ||||
FreeBSD | ✔ | ✔ | ✔ |
В других ОС, не перечисленных выше, используется чистый Java SQLite. (Относится к версиям до 3.7.15)
Если вы хотите использовать собственную библиотеку для своей ОС, создайте исходный код с нуля.
Sqlite JDBC поддерживает собственный образ GraalVM «из коробки», начиная с версии 3.40.1.0. До этого существовала элементарная поддержка некоторых версий, но CI активно не тестировала ее.
По умолчанию библиотека sqlitejdbc
для цели компиляции будет включена в собственный образ вместе с необходимой конфигурацией JNI. Во время выполнения эта библиотека будет извлечена во временную папку и загружена оттуда. Однако для более быстрого запуска рекомендуется установить свойство org.sqlite.lib.exportPath
во время сборки. При этом библиотека sqlitejdbc
будет экспортирована во время сборки в указанный каталог, и библиотека не будет включена в качестве ресурса. В результате само собственное изображение будет немного меньше, а накладные расходы на экспорт библиотеки во время выполнения будут устранены, но вам необходимо убедиться, что библиотеку можно найти во время выполнения. Лучший способ сделать это — просто разместить библиотеку рядом с исполняемым файлом.
native-image -Dorg.sqlite.lib.exportPath= ~ /outDir -H:Path= ~ /outDir -cp foo.jar org.example.Main
При этом общая библиотека sqlitejdbc
и выходные данные собственного изображения будут помещены в папку ~/outDir
.
В этом примере используется плагин Maven Native-Build-Tools:
< 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 >
Это автоматически поместит библиотеку sqlitejdbc
в папку /target
вашего проекта, создав функциональную среду выполнения. При упаковке полученного приложения просто включите библиотеку в комплект поставки.
Загрузите с Maven Central или со страницы выпусков.
< dependencies >
< dependency >
< groupId >org.xerial</ groupId >
< artifactId >sqlite-jdbc</ artifactId >
< version >3.47.1.0</ version >
</ dependency >
</ dependencies >
Снимки разрабатываемой версии доступны в репозитории снимков Sonatype.
Ресурсы Maven Central подписываются с использованием GPG, а файлы подписей, заканчивающиеся на .asc, доступны в том же месте, что и другие загрузки.
В настоящее время для подписи релизов используется следующий ключ:
-----НАЧАТЬ БЛОК ПУБЛИЧНОГО КЛЮЧА PGP----- Комментарий: C1CB A75E C9BD 0BAF 8061 9354 59E0 5CE6 1818 7ED4 Комментарий: Таро Л. Сайто (для действий GitHub) <[email protected]> xjMEYuRVGhYJKwYBBAHaRw8BAQdA2Dp4m1Yhtb1g94pQzzL24FuP6b9KXF8lP9Dh hZnynhfNM1Rhcm8gTC4gU2FpdG8gKEZvciBHaXRIdWIgQWN0aW9ucykgPGxlb0B4 ZXJpYWwub3JnPsKUBBMWCgA8FiEEwcunXsm9C6+AYZNUWeBc5hgYftQFAmLkVRoC GwMFCwkIBwIDigIBBhUKCQgLAgQWAgMBAh4HAheAAAAoJEFngXOYYGH7UfPwBAK7x TVRebZeWcAwmGaMUsbg7SgJou8xnkhByObPLUC/4AQDPsZeYmi4KXyXPzmqhCicd Y+ZSJWIDQqitK2ujPDFXA844BGLkVRoSCisGAQQBl1UBBQEBB0Atu9kejBi+6wfO T0a9z/LYEEdNXM/VX6xt1onKToPPdQMBCAfCeAQYFgoAIBYhBMHLp17JvQuvgGGT VFngXOYYGH7UBQJi5FUaAhsMAAAoJEFngXOYYGH7UlMABAKyRCazhVyUFg5FOpAnm ckBY38CaMGPPLXVyY8Kr6dYFAP9wYLu7nsDZCOXkAgS+et4Pk1WZCggoYUkxsX1o 0KZXBQ== = Вьяс -----КОНЕЦ БЛОКА ПУБЛИЧНОГО КЛЮЧА PGP-----
Версия проекта соответствует версии библиотеки SQLite, включенной в jar, с дополнительной цифрой, обозначающей приращение проекта.
Например, если версия SQLite — 3.39.2
, версия проекта будет 3.39.2.x
, где x
начинается с 0 и увеличивается с каждым выпуском, который не меняет версию SQLite.
Если версия SQLite будет обновлена до 3.40.0
, версия проекта будет обновлена до 3.40.0.0
.
Возможно, вам придется добавить преобразователь плагина Shade для решения проблемы. 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 >
Мы всегда ищем:
Рецензенты по вопросам или PR, вы можете проверить
Авторы, отправляющие PR, вы можете проверить и
Пожалуйста, прочтите наше руководство по вкладам.