2017-01-02 6 views
0

を経由してSQLiteのユーザーバージョンを取得します。私はプラグマを使用することができることを知っているが、私は実行している場合:私はSQLiteのデータベースに接続するためにJDBCを使用しているJDBC接続

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

そして、検索結果セットが閉じられます(データ・セットが見つかりません)。

答えて

1

あなたはこのスニペットは問題なく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> 
+0

をあなたは正しいです - それは私でした間違い。私はメソッドのバージョンを取得し、このメソッドでは、try..finallyを使ってステートメントを閉じます。私はStatementとResultSetの間の強い参照を見落としました。 – altralaser