Kann Zeilen aus Datenbank nicht löschen (MySQL)

Xody

Grünschnabel
Hi,
das ist das zweite Forum in dem ich es reinposte weil das andere Forum nicht gerade aktiv ist und ich keine 4 Wochen auf eine Antwort warten will.
Mir gelingt es einfach nicht die Zeilen 3-5 in meiner Datenbank mit der Methode deleteRow() der ResultSet-Klasse zu löschen. Es handelt sich hier um ein Typ-4 Treiber sowie MySql.
Hier das Nötigste von Quellcode:

try{
Class.forName( "com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://localhost/witzbold1_de_db","root", "");
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

String sqlQuery = "SELECT richtig, name FROM rechenmeister";
rSet = stmt.executeQuery(sqlQuery);
....
....

rSet.absolute(3);
//In dieser for-Schleife tritt der Fehler auf
for(int z=3;z<=5;z++){
rSet.deleteRow();
rSet.updateRow();
}
....
....

Beim Ausführen mit dem JBuilder9 erhalte ich den Fehler:
"com.mysql.jdbc.NotUpdatable: Result Set not updatable.This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, the query must select only one table, and must select all primary keys from that table. See the JDBC 2.1 API Specification, section 5.6 for more details."

Könnts vielleicht am "and must select all primary keys from that table" liegen? Ich kann mit der ganzen Meldung eingentlich nicht viel anfangen.

Danke, Xody.
 
Moin,

Wie der Name ResultSet schon sagt, handelt es sich dabei um eine Ergebnismenge und nicht um einen Zugriff auf die Datenbank.

// edit: Oh ich muss mich korrigieren. Es geht ja scheinbar doch .. Dann liegt es wirklich daran, dass du nicht die Spalte mit dem PK mit im SELECT Query auswählst ..

Um Zeilen zu löschen musst du eher sowas hier benutzen:

int recordsUpdated;
recordsUpdated = st.executeUpdate("DELETE FROM foo WHERE id = 123456");

oder sowas in die Art ..

Gruß Stefan
 
Zuletzt bearbeitet:
Danke, so funktionierts auch :-)
Falls ich noch im Laufe der Zeit mit meiner DB Probleme bekomme, poste ichs einfach hier rein.
 
Zurück