Меня привлекает аккуратность, которую предоставляет одна база данных. В какой библиотеке драйвера/соединителя есть подключение и использование SQLite с Java.
Я обнаружил библиотеку обертки, http://www.ch-werner.de/javasqlite, но есть ли другие более известные проекты?
wiki перечисляет еще несколько оберток:
Я нашел ваш вопрос во время поиска информации с помощью 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();
}
}
Я понимаю, что вы спросили конкретно о SQLite, но, возможно, база данных HSQL будет лучше соответствовать Java. Он написан на самой Java, работает в JVM, поддерживает таблицы в памяти и т.д., И все эти функции делают его вполне пригодным для прототипирования и модульного тестирования.
Проект Дэвида Крошоу (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 (Университет Токио-браузера генома) Инструментарий, которая является нашей утилитой для создания персонализированных геномных браузеров.
РЕДАКТИРОВАТЬ. Как обычно, когда вы что-то обновляете, будут проблемы в некотором неясном месте вашего кода (со мной произошло). Тест-тест =)
sqlite-jdbc
великолепен, но имейте в виду, что он лицензирован Apache . Поэтому вы должны дать атрибуцию, если вы используете ее, будь то код FOSS или проприетарный.
Существует новый проект SQLJet, который является чистой реализацией SQLite SQLite. Он еще не поддерживает все функции SQLite, но может быть очень хорошим вариантом для некоторых проектов Java, работающих с базами данных SQLite.
Берни сообщение очень полезно. Не удалось проголосовать (не хватает репутации:(), но это помогло многим. Просто повторю!
http://www.zentus.com/sqlitejdbc/
Здесь вы можете найти последнюю банку JDBC SQLite. Просто добавьте банку в свой путь класса, и все готово!:) Вы можете запустить пример кода Берни, чтобы проверить, все ли в порядке.
http://souptonuts.sourceforge.net/readme_sqlite_tutorial.html http://www.sqlite.org/lang.html
Здесь вы можете найти некоторую помощь по синтаксису SQL для SQLite. Приветствия SQLite:)
Код sqlitejdbc можно загрузить с помощью git из https://github.com/crawshaw/sqlitejdbc.
# git clone https://github.com/crawshaw/sqlitejdbc.git sqlitejdbc
...
# cd sqlitejdbc
# make
Примечание. Makefile требует бинарного бинарного файла для загрузки библиотек sqlite/deps.
Когда вы компилируете и запускаете код, вы должны установить значение параметра classpath. Точно так же:
javac -classpath .;sqlitejdbc-v056.jar Text.java
java -classpath .;sqlitejdbc-v056.jar Text
Обратите внимание на "." и "sparate"; "(win, linux есть": ")
Пример кода приводит к утечке памяти в Tomcat (после разворачивания webapp, загрузчик классов по-прежнему остается в памяти), что в конечном итоге приведет к outofmemory
. Способ решения этой проблемы - использовать sqlite-jdbc-3.7.8.jar; это моментальный снимок, поэтому он пока не отображается для maven.
Typo: java -cp .:sqlitejdbc-v056.jar Test
должен быть: java -cp .:sqlitejdbc-v056.jar; Test
обратите внимание на точку с запятой после ".jar". Надеюсь, что это поможет людям, может вызвать много хлопот.
.:xxx.jar;
не имеет смысла. И вам также нужно указать имя пакета для класса Test.