博主博客

NOTICE: sqlite-jdbc 已经移到 Github:https://github.com/xerial/sqlite-jdbc.

SQLite JDBC 驱动

SQLite JDBC 是由 Taro L. Saito 开发, 用于 Java 访问和创建 SQLite 数据库文件的库。

我们 SQLite JDBC 库已经封装在一个JAR文件, 不需要在主流的操作系统如:Window, Mac OS X, Linux 等进行本地库配置。用法很简单, 下载我们的 sqlite-jdbc 库(JAR 文件), 然后添加到你的 class path中。

与Zentus' SQLite JDBC 有什么不同?

这个的 sqlite-jdbc 基于 Zentus' SQLite JDBC driver 的分支。我们改善了两个方面:

  • 通过嵌入每个编译后的SQLite本地库支持主流的操作系统
  • 移除手动配置

在最初的版本中, 为了使用原生版本的sqlite-jdbc, 用户必须使用命令配置本地的代码路径(dll, jnilib, 文件等)等参数。例如,-Djava.library.path=(path to the dll, jnilib, etc.), or -Dorg.sqlite.lib.path等。配置这些变量的过程很容易出错和引起用户不必要的麻烦。我们的 SQLite JDBC 库完全抛弃了这些不必要的麻烦。

另外一个不同的地方是我们保留了 SQLite JDBC 库升级到最新版本的 SQLite 引擎。因为我们这个库是最热门的库之一。例如, SQLite JDBC 是 UTGB (University of Tokyo Genome Browser) Toolkit 的一个核心组件, 这个浏览器是使用我们程序来创建个性化的基因组浏览器。

使用方法

SQLite JDBC 是一个通过 JDBC API 访问 SQlite 数据库的库。 自行查阅 JDBC 指引或Oracle JDBC 开发文档

  • 下载页面(或者使用Maven)中下载 sqlite-jdbc-(VERSION).jar 然后添加这个 jar 到 classpath中。

  • 在你的代码中使用 org.sqlite.JDBC 打开驱动. (看下面的例子)

  • 更多的示例

  • 示例的使用方法(假设 sqlite-jdbc-(VERSION).jar 已经放进当前文件夹)

> javac Sample.java
> java -classpath ".;sqlite-jdbc-(VERSION).jar" Sample   # in Windows
or 
> java -classpath ".:sqlite-jdbc-(VERSION).jar" Sample   # in Mac or Linux
name = leo
id = 1
name = yui
id = 2

Sample.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Sample {
	public static void main(String[] args) {
        Connection connection = null;
        try {
          // 创建一个数据库连接
          connection = DriverManager.getConnection("jdbc:sqlite:sample.db");
          Statement statement = connection.createStatement();
          // 设置 30 秒超时
          statement.setQueryTimeout(30);

          statement.executeUpdate("drop table if exists person");
          statement.executeUpdate("create table person (id integer, name string)");
          statement.executeUpdate("insert into person values(1, 'leo')");
          statement.executeUpdate("insert into person values(2, 'yui')");
          ResultSet rs = statement.executeQuery("select * from person");
          while(rs.next()) {
        	  // 读取结果集
        	  System.out.println("name = " + rs.getString("name"));
        	  System.out.println("id = " + rs.getInt("id"));
          }
        } catch(SQLException e) {
        	// 如果错误信息是 "out of memory", 
        	// 大概是找不到数据库文件
        	System.err.println(e.getMessage());
        } finally {
        	try {
	            if(connection != null)
	            connection.close();
		    } catch(SQLException e) {
	            // 连接关闭失败
	            System.err.println(e);
	        }
        }
	}
}

如何指定数据库文件

这个例子是选择 Windows 下的 C:\work\mydatabase.db

Connection connection = DriverManager.getConnection("jdbc:sqlite:C:/work/mydatabase.db");

选择 UNIX(Linux, Mac OS X 等) 下的 /home/leo/work/mydatabase.db

Connection connection = DriverManager.getConnection("jdbc:sqlite:/home/leo/work/mydatabase.db");

怎样使用内存数据库

SQlite 支持内存数据库管理, 不需要创建任何的数据库文件。在你的Java代码中使用内存数据库可以下面的链接:

Connection connection = DriverManager.getConnection("jdbc:sqlite::memory:");

参考文献

https://bitbucket.org/xerial/sqlite-jdbc
https://github.com/xerial/sqlite-jdbc