2024-02-08 06:00:05

Java和SQLite

我被单个文件数据库所提供的简洁所吸引。在Java中连接和使用SQLite的驱动程序/连接器库是什么?

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


当前回答

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

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

java -classpath .;sqlitejdbc-v056.jar Text

请注意“。”和“分隔”;(赢了,Linux是“:)”)

其他回答

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

我在用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();
    }
  }

Sqlitejdbc代码可以使用git从https://github.com/crawshaw/sqlitejdbc下载。

# git clone https://github.com/crawshaw/sqlitejdbc.git sqlitejdbc
...
# cd sqlitejdbc
# make

注意:Makefile需要curl二进制文件来下载sqlite库/deps。

我知道你特别问了SQLite,但也许HSQL数据库更适合Java。它本身是用Java编写的,运行在JVM中,支持内存表等,所有这些特性都使它非常适合原型设计和单元测试。

java -cp .:sqlitejdbc-v056.jar

Java -cp .:sqlitejdbc-v056.jar;测试

注意“。jar”后面的分号,我希望这能帮助到大家,可能会给大家带来很多麻烦