Java и SQLite
Меня привлекает аккуратность, которую предоставляет одна база данных. В какой библиотеке драйвера/соединителя есть подключение и использование SQLite с Java.
Я обнаружил библиотеку обертки, http://www.ch-werner.de/javasqlite, но есть ли другие более известные проекты?
Ответы
Ответ 1
wiki перечисляет еще несколько оберток:
Ответ 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". Надеюсь, что это поможет людям, может вызвать много хлопот.