# JDBC- Statement Ausführung nicht persistent



## jadb (6. Jul 2009)

Hallo Forum,

mein Problem: Ich nutze die HSQLDB über JDBC und habe auch soweit eine Beispielanfrage hinbekommen. Allerdings ist mir neulich blöderweise mein workspace während des eclispe-betriebs abhanden gekommen, woraufhin nach dessen Neuerstellung und DB-Umkopierung plötzlich nichts mehr funzte, obwohl ich alles einfach nur neu erstellt hab (keine Code-Änderung). Ich habe dazu ein paar Foren durchsucht und gefunden, dass es hilft, die DB statt mit nem Relativpfad absolut anzugeben. Soweit so gut, das hat dann auch wirklich hingehauen (unerklärlicherweise, weil DB im workspace vorhanden). ABER:

seitdem werden statements nur noch zur Laufzeit der Connection ausgeführt. Dort zwar einwandfrei, aber egal was ich an der DB ändere, es taucht nach beenden der Connection nicht mehr auf. Auch wenn ich mehrere Statements innerhalb einer Connection ausführe, sind diese nur innerhalb dieser Connection persistent, danach nicht mehr. 

Habt Ihr ne Idee? 
Hier der Code (mit ergänztem absolutpfad lauffähig):

```
package dbTest; 
 
import java.sql.*; 
 
public class CuDB 
{ 
  public static void main( String[] args ) 
  { 
    try 
    { 
      Class.forName( "org.hsqldb.jdbcDriver" ); 
    } 
    catch ( ClassNotFoundException e ) 
    { 
      System.err.println( "Keine Treiber-Klasse!" ); 
      return; 
    } 
 
    Connection con = null; 
 
    try 
    { 
      String dbPath = "Absolutpfad" ;
      con = DriverManager.getConnection(  
              "jdbc:hsqldb:file:"+dbPath,
              "sa",
              "" ); 
//      con.setAutoCommit(true); ...bringt keine Veränderung!
      Statement stmt = con.createStatement(); 
      
 //   stmt.executeUpdate( "ALTER TABLE displays ADD path varchar(100)" );
      stmt.executeUpdate("INSERT INTO displays VALUES(2,'holopro',true,false)");
  
 
      ResultSet rs = stmt.executeQuery( "SELECT * FROM displays" ); 
 
      while ( rs.next() ) 
        System.out.printf( "%s, %s%n", rs.getString(1),rs.getString(2)); 
 
      rs.close(); 
 
      stmt.close(); 
    } 
    catch ( SQLException e ) 
    { 
      e.printStackTrace(); 
    } 
    finally 
    { 
      if ( con != null ) 
        try { con.close(); } catch ( SQLException e ) { e.printStackTrace(); } 
    } 
  } 
}
```


----------



## thE_29 (7. Jul 2009)

```
Connection.setAutoCommit(true);
```

Probier das mal (aber halt auf dein Connection Objekt)!


----------



## jadb (7. Jul 2009)

Danke für die Hilfe, ich hatte im geposteten Code die AutoCommit schon mal probiert und als Kommentar hier auch eingefügt, dass das nicht geholfen hat...

Inzwischen habe ich meinen Fehler aber selbst gefunden und jetzt gehts wieder:

```
con = DriverManager.getConnection(  
              "jdbc:hsqldb:file:C:\\...\\workspace\\contextDB;shutdown=true",
              "sa",
              "" );
```

Ich hatte das shutdown=true wegen der Absolutpfadangabe nicht mehr drin. 

Danke trotzdem


----------

