Resultset DELETEROW Problem

  • Themenstarter Themenstarter raphk
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
R

raphk

Gast
Hallo!

Ich habe ein Problem wenn ich Einträge aus meiner DB löschen will. Benutze ein ResultSet. Da mach ich dann einen Query ("SELECT * FROM table WHERE a=a).

dann mach ich folgendes:

Code:
while(rs.next())
{
rs.deleteRow()
}

Mit einem Eintrag in der DB klappt das. Bei 2 und 3 Einträgen lässt er einen ungelöscht stehen und ab 4 lässt er 2 stehen. Weiss einer wo hier das Problem liegt? Ich finds komisch das er wenn nur 1 Eintrag gelöscht werden soll er diesen dann auch kilt aber sobald mehr als einer ist das er dann welche stehen lässt und sie nicht löscht. Die WHERE Klausel im Query stimmt und ich hab keine Ahnung wo da das Problem sein soll.

Kennt einer das Problem bzw weiss einer Rat was ich ändern müsste damit das klappt?[/code]
 
Hy,
wiso verwendest du nicht den SQL-Befehl zum löschen?

DELETE FROM table WHERE a=a

?
geht wesentlich schneller und funzt 100%ig.

Gruß
TO
 
raphk hat gesagt.:
... Kennt einer das Problem bzw weiss einer Rat was ich ändern müsste damit das klappt?[/code]
Ich hab schon verstanden, daß der Code nur ein einfach gehaltenes Beispiel sein kann. 😀 Probier es mal so. M.E. kann man sich bei next() nicht darauf verlassen, daß der erste Satz angeprungen wird.

Code:
rs.first();

do
{
rs.deleteRow()
}while(rs.next());
 
Danke euch beiden aber keiner der Vorschläge hat eine Verbesserung gebracht. Er löscht immer nur ein par aber nie alle Werte. Mal lässt er einen, manchmal 2 oder 3 stehen ohne sie zu löschen. Und ich hab jetzt keine Ahnung mehr was ich noch versuchen könnte. 😳
 
raphk hat gesagt.:
Danke euch beiden aber keiner der Vorschläge hat eine Verbesserung gebracht. Er löscht immer nur ein par aber nie alle Werte. Mal lässt er einen, manchmal 2 oder 3 stehen ohne sie zu löschen. Und ich hab jetzt keine Ahnung mehr was ich noch versuchen könnte. 😳
Hat Deine Tabelle einen PrimaryKey?
 
Wenn "SELECT * FROM table WHERE a=a" mehrere Zeilen liefert (bitte überprüfen),
dann wird "DELETE FROM table WHERE a=a" auch alle diese Zeilen löschen :wink:
 
haste vielleicht eine SQLException irgendwo verschluckt

=> Löschen kann z.B. wegen referentieller Integrität scheitern
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben