我对单个文件数据库提供的简洁性感到着迷。可以使用哪些驱动程序/连接器库来连接SQLite并将其与Java一起使用。
我发现了一个包装器库http://www.ch-werner.de/javasqlite,但是还有其他更出色的项目吗?
我对单个文件数据库提供的简洁性感到着迷。可以使用哪些驱动程序/连接器库来连接SQLite并将其与Java一起使用。
我发现了一个包装器库http://www.ch-werner.de/javasqlite,但是还有其他更出色的项目吗?
Answers:
在维基列出了更多的包装:
在使用SQLite和Java 搜索信息时找到了您的问题。只是想我要补充我的回答,我也贴在我的博客。
我已经用Java编码了一段时间了。我也了解SQLite,但从未使用过……好吧,我已经在其他应用程序中使用过它,但从未在我编写的应用程序中使用过。因此,本周我需要一个项目来使用它,它是如此简单!
我找到了SQLite的Java JDBC驱动程序。只需将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中运行,支持内存中的表等,所有这些功能使其非常适用于原型设计和单元测试。
David Crawshaw项目(sqlitejdbc-v056.jar)似乎已过时,最新更新为2009年6月20日, 来源此处
我会推荐Crawshaw sqlite包装程序的Xerials分支。我用Xerials sqlite-jdbc-3.7.2.jar文件替换了sqlitejdbc-v056.jar,没有任何问题。
使用与Bernie的答案相同的语法,并且使用最新的sqlite库要快得多。
与Zentus的SQLite JDBC有什么不同?
最初的Zentus的SQLite JDBC驱动程序 http://www.zentus.com/sqlitejdbc/本身是使用Java语言的SQLite数据库的出色工具,我们的SQLiteJDBC库也依赖于它的实现。但是,其纯Java版本(将SQLite的c / c ++代码完全转换为Java)比其本机版本(使用为每个操作系统(win,mac,linux)编译的SQLite二进制文件)慢得多。
要使用sqlite-jdbc的本机版本,用户必须使用命令行参数(例如-Djava.library.path =)设置本机代码(dll,jnilib,so文件,它们是JNDI C程序)的路径。 (dll,jnilib等的路径)或-Dorg.sqlite.lib.path等。此过程容易出错,并且麻烦告诉每个用户设置这些变量。我们的SQLiteJDBC库完全消除了这些不便之处。
另一个不同之处在于,由于我们是该库的最热门用户之一,因此我们使该SQLiteJDBC libray保持最新,直到SQLite引擎的最新版本。例如,SQLite JDBC是UTGB(东京大学基因组浏览器)工具包的核心组件,该工具包是我们用于创建个性化基因组浏览器的实用程序。
编辑:像往常一样,当您更新某些内容时,在您的代码中某些晦涩的地方会出现问题(发生在我身上)。测试测试测试=)
sqlite-jdbc
项目很棒,但是请注意它是Apache许可的。因此,无论您使用的代码是FOSS还是专有代码,都必须使用归因。
有一个新项目SQLJet,它是SQLite的纯Java实现。它尚不支持所有SQLite功能,但是对于某些与SQLite数据库一起使用的Java项目而言,它可能是一个很好的选择。
伯尼的帖子非常有帮助。无法投票(没有足够的声誉:()。但这很有帮助。只是重申一下!
http://www.zentus.com/sqlitejdbc/
在这里,您可以找到最新的SQLite JDBC jar。只需将jar添加到您的类路径中就可以了!:)您可以运行Bernie的示例代码来测试一切是否正常。
http://souptonuts.sourceforge.net/readme_sqlite_tutorial.html http://www.sqlite.org/lang.html
在这里,您可以找到有关SQLite的SQL语法的帮助。欢呼SQLite :)
sqlitejdbc代码可以使用git从https://github.com/crawshaw/sqlitejdbc下载。
# git clone https://github.com/crawshaw/sqlitejdbc.git sqlitejdbc
...
# cd sqlitejdbc
# make
注意:Makefile需要curl二进制文件才能下载sqlite库/ deps。
该示例代码导致Tomcat中的内存泄漏(在取消部署webapp之后,类加载器仍保留在内存中),这将outofmemory
最终导致问题。解决的方法是使用sqlite-jdbc-3.7.8.jar ; 这是快照,因此尚未出现在Maven中。
错别字: java -cp .:sqlitejdbc-v056.jar Test
应该: java -cp .:sqlitejdbc-v056.jar; Test
注意“ .jar”后的分号,希望对人们有所帮助,可能会引起很多麻烦
.:xxx.jar;
没有任何意义。并且您还需要为Test类指定包名称。