Hi everyone, I'm running into a very strange issue, but I'm not sure if it is because of me or because I'm doing something wrong. Let me depict my scenario.
I'm trying to use H2 to embed a database in a Java app. If the db does not exist, should be newly created and saved to disk (file) once the app finishes. That said, and regarding the documentation: Creating New Databases By default, if the database specified in the URL does not yet exist, a new (empty) database is created automatically. The user that created the database automatically becomes the administrator of this database. Auto-creating new database can be disabled, see Opening a Database Only if it Already Exists<http://h2database.com/html/features.html#database_only_if_exists>. First thing weird enough is that a new database is not created automatically....at least not in the filesystem, maybe this is done in-memory (???? not sure, is not specified in the docs). This leads me to my other question, where does H2 stores the data once finished? I can't see it anywhere in my filesystem. Here is my code that "creates" the db: try { spath = "jdbc:h2:file:data/sample"; conn = DriverManager.getConnection(spath, "john", "doe"); } catch (Exception e) { System.out.println(e.getMessage()); } If right after executing this I look at my relative path + /data....there is nothing...funny thing is that if I execute this right after: try { Statement stat = conn.createStatement(); //create table stat.execute("CREATE TABLE ACTIVITY (ID INTEGER, STARTTIME datetime, ENDTIME datetime, ACTIVITY_NAME VARCHAR(200), PRIMARY KEY (ID))"); //prepared statement PreparedStatement prep = conn.prepareStatement("INSERT INTO ACTIVITY (ID, STARTTIME, ENDTIME, ACTIVITY_NAME) VALUES (?,?,?,?)"); //insert 10 row data for (int i = 0; i<10; i++){ prep.setLong(1, i); prep.setTimestamp(2, new Timestamp(System.currentTimeMillis())); prep.setTimestamp(3, new Timestamp(System.currentTimeMillis())); prep.setString(4, "Activity-" + i); //batch insert prep.addBatch(); } conn.setAutoCommit(false); prep.executeBatch(); conn.setAutoCommit(true); ResultSet rs = stat.executeQuery("Select STARTTIME, ENDTIME, ACTIVITY_NAME from ACTIVITY"); while (rs.next()) { Date start = rs.getTimestamp(1); Date end = rs.getTimestamp(2); String activityName = rs.getString(3); //print query result to console System.out.println("activity: " + activityName); System.out.println("start: " + start); System.out.println("end: " + end); System.out.println("--------------------------"); } rs.close(); //close connection conn.close(); } catch (SQLException e) { e.printStackTrace(); } I get this output: activity: Activity-0 start: 2014-02-10 15:27:07.414 end: 2014-02-10 15:27:07.418 -------------------------- activity: Activity-1 start: 2014-02-10 15:27:07.418 end: 2014-02-10 15:27:07.418 -------------------------- activity: Activity-2 start: 2014-02-10 15:27:07.418 end: 2014-02-10 15:27:07.418 -------------------------- activity: Activity-3 start: 2014-02-10 15:27:07.418 end: 2014-02-10 15:27:07.418 -------------------------- activity: Activity-4 start: 2014-02-10 15:27:07.418 end: 2014-02-10 15:27:07.418 -------------------------- activity: Activity-5 start: 2014-02-10 15:27:07.418 end: 2014-02-10 15:27:07.418 -------------------------- activity: Activity-6 start: 2014-02-10 15:27:07.418 end: 2014-02-10 15:27:07.418 -------------------------- activity: Activity-7 start: 2014-02-10 15:27:07.418 end: 2014-02-10 15:27:07.418 -------------------------- activity: Activity-8 start: 2014-02-10 15:27:07.418 end: 2014-02-10 15:27:07.418 -------------------------- activity: Activity-9 start: 2014-02-10 15:27:07.419 end: 2014-02-10 15:27:07.419 -------------------------- Thus, the db seems to exist, but when the connection is closed, I check my relative path again and there is nothing....I assume H2 is creating the database in-memory, altough using file when creating the connection. Thus, how can I "dump" the in-memory database to file once finished? Thanks! Alejandro -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/h2-database. For more options, visit https://groups.google.com/groups/opt_out.
