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.

Reply via email to