Java и SQLite

Меня привлекает аккуратность, которую предоставляет одна база данных. В какой библиотеке драйвера/соединителя есть подключение и использование SQLite с Java.

Я обнаружил библиотеку обертки, http://www.ch-werner.de/javasqlite, но есть ли другие более известные проекты?

Ответ 1

wiki перечисляет еще несколько оберток:

  • Java-оболочка (вокруг интерфейса SWIG): http://tk-software.home.comcast.net/
  • Хороший учебник по использованию JDBC-драйвера для SQLite. (он работает как минимум!) http://www.ci.uchicago.edu/wiki/bin/view/VDS/VDSDevelopment/UsingSQLite
  • Кросс-платформенный драйвер JDBC, который использует встроенные встроенные библиотеки SQLite для Windows, Linux, OS X и возвращается к чистой реализации Java на других ОС: https://github.com/xerial/sqlite-jdbc (ранее zentus)
  • Еще одна оболочка Java - SWIG. Он работает только с Win32. http://rodolfo_3.tripod.comhttps://stackoverflow.com/index.html
  • sqlite-java-shell: 100% чистый Java-порт оболочки командной строки sqlite3, созданной с помощью NestedVM. (Это не драйвер JDBC).
  • Драйвер SQLite JDBC для JVM Mysaifu: SQLite JDBC-драйвер для JVM Mysaifu и SQLite JNI-библиотека для Windows (x86) и Linux (i386/PowerPC).

Ответ 2

Я нашел ваш вопрос во время поиска информации с помощью SQLite и Java. Просто подумал, что добавлю свой ответ, который я также разместил на blog.

Я уже некоторое время кодирую в Java. Я также знал о SQLite, но никогда не использовал его... Ну, я использовал его через другие приложения, но никогда в приложении, которое я закодировал. Поэтому на этой неделе мне понадобилось это для проекта, и это так простое использование!

Я нашел Java JDBC-драйвер для SQLite. Просто добавьте JAR файл в свой путь к классам и импортируйте java.sql. *

Его тестовое приложение создаст файл базы данных, отправит некоторые команды SQL для создания таблицы, сохранит некоторые данные в таблице и прочитает ее и отобразит на консоли. Он создаст файл test.db в корневом каталоге проекта. Вы можете запустить этот пример с помощью 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();
    }
  }

Ответ 3

Я понимаю, что вы спросили конкретно о SQLite, но, возможно, база данных HSQL будет лучше соответствовать Java. Он написан на самой Java, работает в JVM, поддерживает таблицы в памяти и т.д., И все эти функции делают его вполне пригодным для прототипирования и модульного тестирования.

Ответ 4

Существует новый проект SQLJet, который является чистой реализацией SQLite SQLite. Он еще не поддерживает все функции SQLite, но может быть очень хорошим вариантом для некоторых проектов Java, работающих с базами данных SQLite.

Ответ 5

Проект Дэвида Крошоу (sqlitejdbc-v056.jar) выглядит устаревшим, а последнее обновление - 20 июня 2009 года, источник здесь

Я бы рекомендовал вилку Xerials обертки sqlite Crawshaw. Я без проблем заменил sqlitejdbc-v056.jar на файл Xerials sqlite-jdbc-3.7.2.jar.

Использует тот же синтаксис, что и в Bernie answer, и намного быстрее и с последней библиотекой sqlite.

Что отличается от Zentus SQLite JDBC?

Оригинальный драйвер JDBC Zentus SQLite http://www.zentus.com/sqlitejdbc/ сама по себе является отличной утилитой для с использованием баз данных SQLite с языка Java и нашей библиотеки SQLiteJDBC также полагается на его реализацию. Однако его версия pure-java, который полностью переводит c/С++-коды SQLite в Java, является значительно медленнее по сравнению с его родной версией, которая использует SQLite двоичные файлы, скомпилированные для каждой ОС (win, mac, linux).

Чтобы использовать собственную версию sqlite-jdbc, пользователю пришлось установить путь к (dll, jnilib, поэтому файлы, которые являются программами JNDI C), используя аргументы командной строки, например, -Djava.library.path = (путь к dll, jnilib и т.д.), или -Dorg.sqlite.lib.path и т.д. Этот процесс был подверженный ошибкам и докучливый, чтобы каждый пользователь мог установить эти переменные. Наша библиотека SQLiteJDBC полностью устраняет эти неудобства.

Еще одно отличие заключается в том, что мы сохраняем этот SQLiteJDBC libray обновленный до новейшей версии движка SQLite, потому что мы едины самых горячих пользователей этой библиотеки. Например, SQLite JDBC является основной компонент UTGB (Университет Токио-браузера генома) Инструментарий, которая является нашей утилитой для создания персонализированных геномных браузеров.

РЕДАКТИРОВАТЬ. Как обычно, когда вы что-то обновляете, будут проблемы в некотором неясном месте вашего кода (со мной произошло). Тест-тест =)

Ответ 6

Берни сообщение очень полезно. Не удалось проголосовать (не хватает репутации:(), но это помогло многим. Просто повторю!

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

Здесь вы можете найти последнюю банку JDBC SQLite. Просто добавьте банку в свой путь класса, и все готово!:) Вы можете запустить пример кода Берни, чтобы проверить, все ли в порядке.

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

Здесь вы можете найти некоторую помощь по синтаксису SQL для SQLite. Приветствия SQLite:)

Ответ 7

Когда вы компилируете и запускаете код, вы должны установить значение параметра classpath. Точно так же:

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

java -classpath .;sqlitejdbc-v056.jar Text

Обратите внимание на "." и "sparate"; "(win, linux есть": ")

Ответ 8

Код sqlitejdbc можно загрузить с помощью git из https://github.com/crawshaw/sqlitejdbc.

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

Примечание. Makefile требует бинарного бинарного файла для загрузки библиотек sqlite/deps.

Ответ 9

Пример кода приводит к утечке памяти в Tomcat (после разворачивания webapp, загрузчик классов по-прежнему остается в памяти), что в конечном итоге приведет к outofmemory. Способ решения этой проблемы - использовать sqlite-jdbc-3.7.8.jar; это моментальный снимок, поэтому он пока не отображается для maven.

Ответ 10

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

должен быть: java -cp .:sqlitejdbc-v056.jar; Test

обратите внимание на точку с запятой после ".jar". Надеюсь, что это поможет людям, может вызвать много хлопот.