我被单个文件数据库提供的整洁所吸引.什么驱动程序/连接器库可以连接并使用SQLite和Java.
我发现了一个包装库,http://www.ch-werner.de/javasqlite,但还有其他更突出的项目吗?
我在使用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(); } }
在维基列出了一些更多的包装:
Java包装器(围绕SWIG接口):http://tk-software.home.comcast.net/
为SQLite使用JDBC驱动程序的好教程.(它至少起作用!)http://www.ci.uchicago.edu/wiki/bin/view/VDS/VDSDevelopment/UsingSQLite
跨平台JDBC驱动程序,它在Windows,Linux,OS X上使用嵌入式本机SQLite库,并回退到其他操作系统上的纯Java实现:https://github.com/xerial/sqlite-jdbc(以前的zentus)
另一个Java - SWIG包装器.它只适用于Win32.http://rodolfo_3.tripod.com/index.html
sqlite-java-shell:使用NestedVM构建的sqlite3命令行shell的100%纯Java端口.(这不是JDBC驱动程序).
用于Mysaifu JVM的SQLite JDBC驱动程序:用于Mysaifu JVM的SQLite JDBC驱动程序和用于Windows(x86)和Linux(i386/PowerPC)的SQLite JNI库.
我理解你特意询问了SQLite,但是HSQL数据库可能更适合Java.它是用Java编写的,在JVM中运行,支持内存表等.所有这些功能使它非常适用于原型设计和单元测试.
David Crawshaw项目(sqlitejdbc-v056.jar)似乎已过期,最后更新时间为2009年6月20日, 来源此处
我会推荐Crawshaw sqlite包装器的Xerials fork.我用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,与其本机版本相比要慢得多,后者使用为每个操作系统编译的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(东京大学基因组浏览器)工具包的核心组件,它是我们创建个性化基因组浏览器的实用程序.
编辑:像往常一样,当你更新某些东西时,你的代码中会出现一些不明显的问题(发生在我身上).测试测试=)
有一个新项目SQLJet是SQLite的纯Java实现.它还不支持所有SQLite功能,但对于一些使用SQLite数据库的Java项目来说可能是一个非常好的选择.
伯尼的帖子非常有帮助.无法投票(没有足够的声誉:().但它帮了很多.重申一下!
http://www.zentus.com/sqlitejdbc/
在这里,您可以找到最新的SQLite JDBC jar.只需将jar添加到classpath中即可完成!:)您可以运行Bernie的示例代码来测试一切是否正常.
http://souptonuts.sourceforge.net/readme_sqlite_tutorial.html http://www.sqlite.org/lang.html
在这里,您可以找到有关SQLite的SQL语法的一些帮助.欢呼来到SQLite :)