4

我在 SQLite(使用 JDBC)上作为纯内存数据库运行我的第一次试验。由于我需要非常快速的插入,我尝试相应地设置配置。我可以发现下面的代码仅在 JournalMode 的设置下失败。请参考下图的方法。变量 con 和 isConnected 被定义为类变量,此处未显示。

非常感谢

罗尔夫

public Boolean connect() {
    try {
         Class.forName("org.sqlite.JDBC");      // sqlitejdbc_3.7.2
        // Set all pragmas
         SQLiteConfig config = new SQLiteConfig();

         // This statement (JournalMode setting) causes a fail
         // Without that statement the connection can be established
         // ==> java.sql.BatchUpdateException: batch entry 0: query returns results
         config.setJournalMode(JournalMode.MEMORY);  

         config.setTempStore(TempStore.MEMORY);
         config.setSynchronous(SynchronousMode.OFF);
         config.enforceForeignKeys(false);
         config.enableCountChanges(false);

         con = DriverManager.getConnection("jdbc:sqlite::memory:", config.toProperties()); 

         isConnected = true ;
         return  true ;
    }
    catch (Exception e) {
        LogMessages.instance().print(0, LogMessages.MSG_SEVERITY.ERROR, e.getMessage() + "\n");
        e.printStackTrace() ;
        return false ;
    }

}
4

1 回答 1

0

我有同样的问题,但还有其他方法可以禁用它。打开连接后,您可以执行以下查询: PRAGMA journal_mode=MEMORY;

于 2014-04-11T08:03:42.233 回答