Ich habe eine Anweisung generiert. Diese ist auch richtig formuliert und funktioniert wenn ich Sie direkt eingebe.
Allerding funktioniert Sie über folgende Methode nicht. Vielleicht könntet Ihr mir weiterhelfen
try{
Class.forName("org.apache.derby.jdbc.ClientDriver"); //lädt netzwerk DB Treiber
}catch(Exception e){
e.printStackTrace();
System.out.println("Datenbank Treiber konnte nicht geladen werden");
}
Statement st;
try{
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/Bestandsaufnahme","Admin","Passwort" );
st = con.createStatement();
System.out.println("Verbindung mit Datenbank hergestellt");
st.execute(anweisung);
}
catch(Exception e){
e.printStackTrace();
}
}```
String anweisung ist in dem Testfall
[SQL]INSERT INTO APP.MITARBEITER (ID, VORNAME, NACHNAME, GEBURTSDATUM, ABTEILUNG) VALUES (((Select MAX(id) from APP.MITARBEITER)+1),'Max', 'Mustermann', '1976-05-03', 'Kaffetrinker');[/SQL]
Ich habe bei der Execute auch schon ExecuteUpdate() ausgetestet.
Hier ist mein Stacktrace falls es weiter hilft:
java.sql.SQLSyntaxErrorException: Syntaxfehler: Encountered “;” at line 1, column 178.
at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.Statement.execute(Unknown Source)
at bestandsaufnahme.Abfragen.Execute(Abfragen.java:99)
at bestandsaufnahme.Abfragen.sqladd(Abfragen.java:78)
at bestandsaufnahme.Hauptfenster.ButtonHinzufügenActionPerformed(Hauptfenster.java:419)
at bestandsaufnahme.Hauptfenster.access$400(Hauptfenster.java:12)