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
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