# Resultset DELETEROW Problem



## raphk (2. Feb 2006)

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:


```
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]


----------



## theomega (2. Feb 2006)

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


----------



## bronks (2. Feb 2006)

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.


```
rs.first();

do
{
rs.deleteRow()
}while(rs.next());
```


----------



## raphk (2. Feb 2006)

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.


----------



## bronks (2. Feb 2006)

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?


----------



## Guest (2. Feb 2006)

Ja hat sie


----------



## André Uhres (3. Feb 2006)

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:


----------



## Bleiglanz (3. Feb 2006)

haste vielleicht eine SQLException irgendwo verschluckt

=> Löschen kann z.B. wegen referentieller Integrität scheitern


----------

