Hello Thomas, Yeah, I realised about that afterwards...that approach is not feasible since I'm embedding h2 in a OSGi bundle (not using H2 as an OSGi bundle, but embedding it in a bundle, since I don't need other bundles to be wary of the H2 service). Thus, I'm just storing the db in the home folder. Thanks for the tip!
Regards, Alejandro On Sat, Feb 22, 2014 at 8:36 PM, Thomas Mueller < [email protected]> wrote: > Hi, > > I would avoid using jdbc:h2:file:data/sample, as this is relative to the > current working directory. See also > http://h2database.com/html/features.html#embedded_databases > > Regards, > Thomas > > > > On Mon, Feb 10, 2014 at 5:31 PM, Alejandro Villamarin < > [email protected]> wrote: > >> Hi again, >> >> I modified the path, instead of using >> >> >> spath = "jdbc:h2:file:data/sample"; >> >> Now is: >> >> spath = "jdbc:h2:~/test"; >> >> And now I can see the sample.h2.db file in my home! This obviously seems >> to be a problem when defining the path...thus, I should I define the path >> relative to where the JAR file is being executed? >> >> >> On Mon, Feb 10, 2014 at 4:41 PM, Alejandro Villamarin < >> [email protected]> wrote: >> >>> 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. >>> >> >> -- >> 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. >> > > -- > 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. > -- 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.
