Java和SQLite

时间:2020-03-05 18:46:54  来源:igfitidea点击:

我对单个文件数据库提供的简洁性感到着迷。可以使用哪些驱动程序/连接器库来连接SQLite并将其与Java一起使用。

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

解决方案

回答

Wiki列出了更多包装器:

  • 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库,并回退到其他OS上的纯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和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中运行,支持内存中的表等,所有这些功能使其非常适用于原型设计和单元测试。

回答

有一个新项目SQLJet,它是SQLite的纯Java实现。它尚不支持所有SQLite功能,但是对于某些与SQLite数据库一起使用的Java项目而言,它可能是一个很好的选择。