# HSQLDB DELETE-Statement funktioniert nicht



## scelus29 (24. Dez 2010)

Hallo zusammen,

hab da mal ne Frage. Ich bin heute auf HSQLDB gestoßen und wollte nun mal ein kleines Java-Programm schreiben, dass auf eine solche Datenbank zugreift. Um das Prinzip von HSQLDB zu verstehen, hab ich erstmal nur in einer main() alles ausprobieren wollen.
Bei einer vorbereiteten DB mit der Tabelle User kann ich ein SELECT-Statement ohne Probleme ausführen. Dabei muss der dazugehörige String wie folgt aussehen:

String s  = "SELECT * FROM \"User\"";

Das klappt also wie gesagt auch ganz prima. Mein Problem ist jetzt, beispilesweise ein DELETE oder aber auch ein INSERT durchzuführen. Das funktioniert scheinbar nicht so einfach. Weiß jemand von euch, wie das funktioniert? Hab mich schon totgegooglet... aber irgendwie nirgends was gefunden!

Schonmal danke...
Fabian

Hier mein Code:

```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Test {

    public static void main( String argv[] ) {
        try {
            Class.forName( "org.hsqldb.jdbcDriver" );
            Connection con = DriverManager.getConnection( "jdbc:hsqldb:file:./database/TestDB", "sa", "" );
            Statement stmt = con.createStatement();
            stmt.execute( "DELETE FROM \"User\" WHERE \"ID\" = 3" );
            stmt.close();
            con.close();
        }
        catch( ClassNotFoundException e ) {}
        catch( SQLException e ) {}
    }

}
```


----------



## Gast2 (24. Dez 2010)

Du solltest die zumindest mal die exceptions ausgeben lassen. Da gehört mindestens nen printStacktrace rein. Zu deinem update/insert, du suchst vermutlich sowas wie executeUpdate.


----------



## ARadauer (24. Dez 2010)

java sagt dir vermutlich genau was falsch ist...


```
catch( ClassNotFoundException e ) {}
        catch( SQLException e ) {}
```
sowas als Anfänger auf keinen Fall machen!!!!!!


----------



## scelus29 (24. Dez 2010)

Guten Morgen und schon mal danke. Ich muss gestern Abend wohl einfach schon etwas müde gewesen sein, dass ich vergessen hab die Stacktraces auszugeben. Hatte als Beispiel bei mir eig auch, seh ich grad, nen CREATE-Statement ausgeführt und das ging nicht, weil die Tabelle schon existierte. Also einfach nur zu müde...  dickes SORRY!!! Falls doch noch was is, meld ich mich.
Grüße, Fabian


----------



## scelus29 (24. Dez 2010)

Hi,
hatte anfangs trotzdem noch ein Problem mit DML-Befehlen... (also DELETE, UPDATE und INSERT). Er hat die Daten nach Beendigung des Java-Programms dann einfach nicht beibehalten. Hab den Fehler aber gefunden, dachte nur das hier dann noch mit zu posten um den Thread abzuschließen.

Man muss darauf achten, wenn man di Verbindung zur DB herstellt, dass man das Flag "shutdown=true" setzt, damit die Daten persistent bleiben.


```
con = DriverManager.getConnection("jdbc:hsqldb:file:" + db_file_name_prefix + ";shutdown=true","sa", "");
```


----------

