我被单个文件数据库提供的整洁所吸引。有哪些驱动程序/连接器库可以通过 Java 连接和使用 SQLite。

我发现了一个包装库, http://www.ch-werner.de/javasqlite, ,但是还有其他更突出的项目吗?

有帮助吗?

解决方案

维基百科 列出了更多包装器:

其他提示

我在搜索信息时发现了你的问题 SQLite 和爪哇。只是想我会添加我的答案,我也将其发布在我的 博客.

我用 Java 编码已经有一段时间了。我也知道 SQLite 但从未使用过它......好吧我通过其他方式使用过它 应用 但从来没有在我编写的应用程序中出现过。所以这周我的一个项目需要它,而且它的使用非常简单!

我找到了 SQLite 的 Java JDBC 驱动程序。只需添加 JAR文件 到您的类路径并导入 java.sql.*

他的测试应用程序将创建一个数据库文件,发送一些 SQL 命令来创建一个表,在表中存储一些数据,然后将其读回并显示在控制台上。它将创建 测试数据库 文件位于项目的根目录中。您可以使用以下命令运行此示例 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 中运行,支持内存表等。所有这些功能使其非常适合原型设计和单元测试。

有一个新项目 SQLJet 这是 SQLite 的纯 Java 实现。它还不支持所有 SQLite 功能,但对于某些使用 SQLite 数据库的 Java 项目来说可能是一个非常好的选择。

David Crawshaw 项目(sqlitejdbc-v056.jar)似乎已过时,最后更新时间为 2009 年 6 月 20 日, 来源在这里

我会推荐 西力前叉 Crawshaw sqlite 包装器。我用 Xerials sqlite-jdbc-3.7.2.jar 文件替换 sqlitejdbc-v056.jar 没有任何问题。

使用与中相同的语法 伯尼的回答 并且速度更快,并且带有最新的 sqlite 库。

与 Zentus 的 SQLite JDBC 有什么不同?

原始 Zentus 的 SQLite JDBC 驱动程序 http://www.zentus.com/sqlitejdbc/ 本身是使用Java语言使用SQLite数据库的绝佳实用性,我们的SQLiteJDBC库也依赖于其实现。但是,与其本机版本相比,它的纯java版本将SQLite的C/C ++代码完全转换为Java,它使用了为每个OS编译的SQLite二进制版本(Win,Mac,Linux)。

要使用SQLite-JDBC的本机版本,用户必须通过使用命令行参数,例如,-djava.library.path = (通往dll,jnilib等的路径)或-dorg.sqlite.lib.path等。这个过程容易出错,并且很麻烦,可以告诉每个用户设置这些变量。我们的 SQLiteJDBC 库完全消除了这些不便。

另一个区别是,我们将此SQLiteJDBC库最新到最新版本的SQLite Engine,因为我们是该库中最热门的用户之一。例如,SQLite JDBC是UTGB(东京大学基因组浏览器)工具包的核心组成部分,这是我们创建个性化基因组浏览器的实用性。

编辑 :像往常一样,当你更新某些内容时,代码中某个不起眼的地方会出现问题(发生在我身上)。测试测试测试=)

伯尼的帖子非常有帮助。无法投票(没有足够的声誉:( )。但它有很大帮助。只是重申一下!

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 干杯:)

当您编译并运行代码时,您应该设置类路径选项值。就像下面这样:

javac -classpath .;sqlitejdbc-v056.jar Text.java

java -classpath .;sqlitejdbc-v056.jar Text

请注意“”。和稀疏的“;”(Win,Linux是“:”)

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”后面的分号,我希望对人们有帮助,可能会引起很多麻烦

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top