Вопрос

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

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

Это было полезно?

Решение

Тот Самый Вики перечисляет еще несколько оберток:

  • 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 (ранее зентус)
  • Еще одна оболочка Java - SWIG.Это работает только на Win32. http://rodolfo_3.tripod.com/index.html
  • sqlite-java-оболочка:100% чистый Java-порт командной строки sqlite3, созданный с помощью NestedVM.(Это не драйвер JDBC).
  • Драйвер SQLite JDBC для Mysaifu JVM:Драйвер SQLite JDBC для Mysaifu JVM и библиотека SQLite JNI для Windows (x86) и Linux (i386 /PowerPC).

Другие советы

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

Я уже давно пишу на 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();
    }
  }

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

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

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

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

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

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

  

Исходный драйвер Zentus для SQLite JDBC    http://www.zentus.com/sqlitejdbc/ сама по себе является отличной утилитой для   использование баз данных SQLite из языка Java и нашей библиотеки SQLiteJDBC   также опирается на его реализацию. Тем не менее, его чистая версия Java,   который полностью переводит c / 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 (Токийский университет Genome Browser) Инструментарий,   это наша утилита для создания персонализированных браузеров генома.

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

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

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

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

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

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

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

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

java -classpath .;sqlitejdbc-v056.jar Text

Обратите внимание на ". " и "sparate"; "(победа, linux": ")

sqlitejdbc код можно скачать с помощью git с https://github.com/crawshaw/sqlitejdbc .

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

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

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

Опечатка: java -cp.: sqlitejdbc-v056.jar Test

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top