H2 show value of DB_CLOSE DELAY (set by SET DB_CLOSE_DELAY)

387 Views Asked by At

The H2 Database has a list of commands starting with SET, in particular SET DB_CLOSE_DELAY. I would like to find out what the value of DB_CLOSE_DELAY is. I am using JDBC. Setting is easy

cx.createStatement.execute("SET DB_CLOSE_DELAY 0")

but none of the following returns the actual value of DB_CLOSE_DELAY:

cx.createStatement.executeQuery("DB_CLOSE_DELAY")
cx.createStatement.executeQuery("VALUES(@DB_CLOSE_DELAY)")
cx.createStatement.executeQuery("GET DB_CLOSE_DELAY")
cx.createStatement.executeQuery("SHOW DB_CLOSE_DELAY")

Help would be greatly appreciated.

1

There are 1 best solutions below

0
On BEST ANSWER

You can access this and other settings in the INFORMATION_SCHEMA.SETTINGS table - for example:

String url = "jdbc:h2:mem:;DB_CLOSE_DELAY=3";
Connection conn = DriverManager.getConnection(url, "sa", "the password goes here");
Statement stmt = conn.createStatement();
        
ResultSet rs = stmt.executeQuery("SELECT * FROM INFORMATION_SCHEMA.SETTINGS where name = 'DB_CLOSE_DELAY'");
while (rs.next()) {
    System.out.println(rs.getString("name"));
    System.out.println(rs.getString("value"));
}

In this test, I use an unnamed in-memory database, and I explicitly set the delay to 3 seconds when I create the DB.

The output from the print statements is:

DB_CLOSE_DELAY
3