Java Tutorial表示有两种方法可以通过JDBC连接数据库: DriverManager 类(旧的,不推荐)和 DataSource 类。
我不知道如何使用DriverManager:
Connection con = DriverManager.getConnection("jdbc:sqlite:mytest.db");
...
但是我找不到如何通过JDBC将DataSource用于SQLite。 SQLite(或者它的JDBC驱动程序提供程序,我不知道如何正确调用它)支持使用DataSource吗?
我正在使用xerial/sqlite-jdbc驱动程序来使用java中的SQLite(https://github.com/xerial/sqlite-jdbc)
我最好的猜测是我将使用org.sqlite.SQLiteDataSource类(它来自sqlite-jdbc-3.15.1.jar用于Xerial sqlite-jdbc驱动程序),但是如何?是这样吗?我也猜测,如何做到这一点应该是在Xerial驱动程序文档中,但它们只给出了如何使用DriverManager进行连接的示例。
所以我要求大师的帮助确认this Xerial驱动程序/ jar不支持DataSource语法,或者举例说明如何操作,或者建议使用DataSource支持的替代驱动程序(对于Java中的SQLite)或其他建议......
JDBC驱动程序管理器 - JDBC DriverManager类定义对象 它可以将Java应用程序连接到JDBC驱动程序。 DriverManager的 传统上一直是JDBC架构的支柱。它是 非常小而简单。
使用标准扩展包javax.naming和javax.sql 使用Java命名和目录注册的DataSource对象 Interface™(JNDI)命名服务,用于与数据建立连接 资源。您可以使用任一连接机制,但使用 建议尽可能使用DataSource对象。
答案 0 :(得分:4)
我最好的猜测是我将使用org.sqlite.SQLiteDataSource类(它来自sqlite-jdbc-3.15.1.jar用于Xerial sqlite-jdbc驱动程序),
是的,这似乎很可能。
但是如何?
我只是尝试了以下内容,它对我有用:
package com.example.sqlite.sqlite_test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.sqlite.SQLiteDataSource;
public class SqliteTestMain {
public static void main(String[] args) {
SQLiteDataSource ds = new SQLiteDataSource();
ds.setUrl("jdbc:sqlite::memory:");
try (Connection conn = ds.getConnection()) {
System.out.println("Connected.");
String sql =
"SELECT COUNT(*) AS n FROM \"sqlite_master\"";
try (
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery(sql)) {
rs.next();
System.out.printf(
"The \"sqlite_master\" table contains %d row(s).%n",
rs.getInt(1));
}
} catch (SQLException e) {
e.printStackTrace(System.err);
}
}
}