Hi,

Worth a try, I'll check it out! Thanks!

Alejandro


On Fri, Feb 28, 2014 at 8:20 AM, Thotheolh <[email protected]> wrote:

> I have created a tool called 'localdb' specifically for handling such a
> case a few years back (and should still be compatible with current H2
> versions since no protocol changes were made for the filesystem jdbc
> access).
>
> Link: https://code.google.com/p/localdb
>
> The wiki page contains the how-to information.
>
> There was a previous case in the h2-database Google Group in the year of
> 2011 which you could refer at:
> https://groups.google.com/forum/#!topic/h2-database/eoId0GtOgUo
>
>
> On Monday, February 10, 2014 3:41:09 PM UTC, Alejandro Villamarin 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.

Reply via email to