【问题标题】:Get SQLite user version via JDBC connection通过 JDBC 连接获取 SQLite 用户版本
【发布时间】:2017-01-02 19:59:19
【问题描述】:

我正在使用 JDBC 连接到 SQLite 数据库:

Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:/test.db");

现在我的问题是我无法获取用户版本。我知道我可以使用 PRAGMA 但如果我执行:

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("PRAGMA user_version;");

然后将关闭检索到的结果集(未找到数据集)。

【问题讨论】:

    标签: java sqlite jdbc


    【解决方案1】:

    似乎您在未描述的代码中有问题,因为这个 sn-p 可以毫无问题地设置和获取user_version

    import java.sql.*;
    
    public class Main {
        public static void main(String[] args) throws Exception {
            Class.forName("org.sqlite.JDBC");
            Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
    
            try(Statement statement = conn.createStatement()) {
                statement.execute("PRAGMA user_version = 10;");
            }
    
            try(Statement statement = conn.createStatement()) {
                try(ResultSet rs = statement.executeQuery("PRAGMA user_version;")) {
                    System.out.println(rs.getInt(1));
                }
            }
        }
    }
    

    Sqlite 适配器:

    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.15.1</version>
    </dependency>
    

    【讨论】:

    • 你是对的 - 这是我的错误。我在一个方法中获得了版本,在这个方法中我有一个 try..finally 来关闭语句。我忽略了 Statement 和 ResultSet 之间的强引用。
    猜你喜欢
    • 2011-04-10
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多