H2 DB prüfen od sie neu ist

Diskutiere DB prüfen od sie neu ist im Datenbankprogrammierung Forum; Hallo Leute, ich arbeite gerade an einem kleinen Prog rum. Es soll Daten in eine H2 Db schreiben. Wenn das Program gestartet wird,soll es prüfen...

  1. zhermann
    zhermann Neues Mitglied
    Hallo Leute,

    ich arbeite gerade an einem kleinen Prog rum.
    Es soll Daten in eine H2 Db schreiben.
    Wenn das Program gestartet wird,soll es prüfen ob die DB vorhanden ist, wenn nicht erstelle sie mir und richte die Tabellen ein.

    Mein erster Versuch sieht so aus.

    public void initDB(String filepath, String username, String userpwd) {
    try
    {
    File dbFile = new File(filepath);
    if (dbFile.exists())
    {
    Class.forName("org.h2.Driver");
    Connection conn = DriverManager.getConnection("jdbc:h2:" + filepath,username,userpwd);
    Statement stmt = conn.createStatement();

    // Nur zum Testen temporär
    ResultSet rs = stmt.executeQuery("SELECT * FROM table1");
    while( rs.next() )
    {
    String name = rs.getString("user");
    System.out.println( name );
    }
    // TEST ENDE temporär
    // ab hier dann der richtige Code
    stmt.close();
    conn.close();
    }
    else
    {
    Class.forName("org.h2.Driver");
    Connection conn = DriverManager.getConnection(filepath,username,userpwd);
    Statement stmt = conn.createStatement();
    stmt.executeUpdate("CREATE TABLE table1 ( user varchar(50) )" );
    stmt.executeUpdate( "INSERT INTO table1 ( user ) VALUES ( 'Claudio' )" );
    stmt.executeUpdate( "INSERT INTO table1 ( user ) VALUES ( 'Bernasconi' )" );
    stmt.executeUpdate( "INSERT INTO table1 ( user ) VALUES ( 'Zsolt' )" );
    stmt.executeUpdate( "INSERT INTO table1 ( user ) VALUES ( 'Edina' )" );
    }
    } catch (Exception e)
    {
    System.out.println(e.getMessage());
    }
    }


    Leider geht er immer in den else-Teil und erstellt eine DB, auch wenn die DB bereits vorhanden ist.
    Jetzt frag ich mich, ob es nicht so was wie

    conn = DriverManager.getConnection(filepath,username,userpwd);
    if (conn.ist_die_DB_neu_erstellt) {
    Dann Tabellen einrichten
    { else {
    Datenbank lesen und Ändern
    }

    gib?

    Hat da schon mal einer was in diese Richtung gemacht?

    Gruß ZHermann
     
  2. Vielleicht hilft dir dieser Java-Kurs hier weiter --> (hier klicken)
  3. thet1983
    thet1983 Aktives Mitglied
    wenn er immer in den else Zweig geht dann stimmt aber dein Path nicht...
     
  4. Thallius
    Thallius Bekanntes Mitglied
    Schließt Du Connection auch irgendwann mal? Die Statements sollte man auch schliessen. Ich kenne H2 nicht aber eventuell erstellt es sonst alles erstmal nur im RAM und flushed das Ganze gar nicht in die Datei wenn es nirgendwo geschlossen wird?
     
  5. zhermann
    zhermann Neues Mitglied
    Hallo,

    @thet1983:
    der Path wird weiter oben zusammen gesetzt: System.getProperty("user.dir") + "//datenbank.db"
    Sysout bring folgendes: "E:\MeinProgramm\datenbank.db", das ist dann auch soweit korrekt, oder?
    Wenn die Datei nicht da ist, wird sie auch dort erstellt, allerdings mit dem Zusatz datenbank.db.mv.db
    Jetzt stellt sich mir die Frage, wo nimmt er den Zusatz .mv.db her?

    @Thallius:
    Natürlich wird die DB geschlossen, habs halt vergessen zu kopieren, sorry.
     
  6. zhermann
    zhermann Neues Mitglied
    Ich glaube ich habe meinen Fehler gefunden :mad:
    Blödes Hirn :confused:

    Ich prüfe auf "datenbank.db". H2 hängt aber automatisch ".mv.db" an, dass habe ich irgendwie übersehen/ignoriert.
     
Die Seite wird geladen...

DB prüfen od sie neu ist - Ähnliche Themen

Täglich auf Erinnerungen überprüfen
Täglich auf Erinnerungen überprüfen im Forum Java Basics - Anfänger-Themen
Eingabe auf Richtigkeit und Reihenfolg überprüfen
Eingabe auf Richtigkeit und Reihenfolg überprüfen im Forum Java Basics - Anfänger-Themen
Prüfen ob Textfile existiert
Prüfen ob Textfile existiert im Forum Allgemeine Java-Themen
Verbindung Überprüfen
Verbindung Überprüfen im Forum Netzwerkprogrammierung
Eingabe überprüfen
Eingabe überprüfen im Forum Java Basics - Anfänger-Themen
Thema: DB prüfen od sie neu ist