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.

Reply via email to