SQLite Datenbank - Löschen von Reihen funktioniert nicht

Q

quiddix

Ambitioniertes Mitglied
1
Hallo,

ich schreibe euch, da ich es einfach nicht schaffe Datenbankeinträge aus meinen Tabellen zu löschen.

Ich habe schon genug recherchiert finde jedoch leider keinen Fall, der mir weiterhelfen könnte.

Ich habe eine Tabelle, die 2 Columns hat:

String SQL_CREATE = "CREATE TABLE IF NOT EXISTS produktExpdate ("
+ " produkt_id INTEGER NOT NULL,"
+ " expirationdate_id INTEGER NOT NULL)";

Diese Tabelle wird als n:m Relationstabelle verwendet. Aufgrund der simplen Appikation und Datenhaltung wurde auf Foreign Keys verzichtet.

Einträge in die Tabelle einfügen funktioniert prima. Ich möchte nun bei bedarf wieder Einträge entfernen. Das mache ich folgendermaßen. Da ich zwei Where Argumente habe, kann ich nicht die "delete()" Funktion verwenden, sondern muss es über eine raw-query lösen:

public boolean deleteProduct(int productId, int dateId) {
SQLiteDatabase db = getWritableDatabase();
db.beginTransaction();
try {
String delete = "DELETE FROM " + ProduktExpdateTbl.TABLE_NAME
+ " WHERE " + ProduktExpdateTbl.PRODUCT_ID + "="
+ String.valueOf(productId) + " AND " + ProduktExpdateTbl.EXPIRATIONDATE_ID
+ "=" + String.valueOf(dateId);
db.rawQuery(delete, null);
db.setTransactionSuccessful();
return true;
} catch (Throwable ex) {
Log.e(TAG, "Fehler beim Löschen eines Produkts" + ex);
return false;

} finally {
db.endTransaction();
}
}

Den String speichere ich temporär, um zu sehen ob mein SQL-Statement stimmt. Wenn ich debugge steht folgender Wert im String:

DELETE FROM produktExpdate WHERE produkt_id=3 AND expirationdate_id=1

Leider wurde danach nichts gelöscht. Meine Abfrage sagt mir, dass immer noch die gleiche Anzahl an Einträgen in der Datenbank enthalten ist.

Kann mir bitte jemand helfen bin total am verzweifeln. Danke
 
Oh mann. Irgendwie passiert es mir immer wieder. Ich kann den Code 2 Stunden anschauen und erkenne den Fehler nicht. Kurz nachdem ich einen Thread erstelle erkenne ich ihn jedoch.

Naja Problem gelöst.

Ich sollte einfach anstatt db.rawquery zum ausführen von Änderungsoperationen vielleicht db.execSQL verwenden :(.
Wenn Dummheit wehtun würde :(
 

Ähnliche Themen

R
Antworten
6
Aufrufe
1.016
swa00
swa00
SaniMatthias
Antworten
19
Aufrufe
962
swa00
swa00
S
Antworten
33
Aufrufe
2.676
Sempervivum
S
Zurück
Oben Unten