Вопрос-ответ

Java and SQLite [closed]

Java и SQLite [закрыты]

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

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

Переведено автоматически
Ответ 1

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

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

Я нашел драйвер Java JDBC для SQLite. Просто добавьте файл JAR в свой classpath и импортируйте 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();
}
}
Ответ 2

В 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.com/index.html

  • sqlite-java-shell: 100% чистый Java-порт командной строки sqlite3, созданный с помощью NestedVM. (Это не драйвер JDBC).

  • Драйвер SQLite JDBC для Mysaifu JVM: драйвер SQLite JDBC для Mysaifu JVM и библиотека SQLite JNI для Windows (x86) и Linux (i386 / PowerPC).

Ответ 3

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

Ответ 4

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

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

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

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


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


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


Еще одно отличие заключается в том, что мы поддерживаем эту библиотеку SQLiteJDBC в актуальном состоянии до последней версии движка SQLite, потому что мы являемся одними из самых активных пользователей этой библиотеки. Например, SQLite JDBC является основным компонентом инструментария UTGB (University of Tokyo Genome Browser) Toolkit, который является нашей утилитой для создания персонализированных геномных браузеров.


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

2024-02-04 22:35 java