SQLite daten löschen

  • 12 Antworten
  • Letztes Antwortdatum
K

kingmex123

Neues Mitglied
0
Guten Tag,
ich suche eine Möglichkeit Daten aus der SQLiteDatenbank zu löschen.
Hab es schon versucht mit
datenbase.execSQL("DELETE FROM "+ "VERLAUF")
oder in der Klasse VerlaufDataSoure mit
datasoure.delete("VERLAUF",null,null)
doch irgendwie stürzt das Programm ab, sobald ich die Daten löschen möchte.

Vielen Dank schon mal
 

Anhänge

  • sql.png
    sql.png
    22,6 KB · Aufrufe: 476
  • sq2.png
    sq2.png
    20,6 KB · Aufrufe: 438
  • sq3.png
    sq3.png
    16,8 KB · Aufrufe: 413
Logcat

Sent from my GT-I9100 using Android-Hilfe.de App
 
Nun stürzt das Programm nicht ab, aber es passiert auch nichts.

Die Daten sind doch in der db datei gespeichert oder?
Also muss ich nichts mit dem Cursor oder dem Array ausprobieren?
Die Klasse Entry besitzt nur getter und setter ..nur so


Zudem möchte ich einmal die ganze Tabelle löschen enventuell mit
"db.execSQL("DELETE FROM " + table)"


und einzige Spalten eventuell so

public void deleteContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_CONTACTS, KEY_ID + " = ?", new String[] {
String.valueOf(contact.getID())
});
db.close();
 

Anhänge

  • log.png
    log.png
    40,2 KB · Aufrufe: 440
Zuletzt bearbeitet:
Was soll er denn löschen?

Du gibst ja keine Where-Klausel weiter, was er löschen soll...
Oder soll er die ganze Tabelle löschen? Dann mach das doch mit einem Drop-Befehl und nicht mit dem delete.
Deine Logcat ist auch null aussagekräftig, bitte nächste mal den relevanten Ausschnitt wählen.
 
kann ich nicht mit
database.deleteDatabase("data/data/Paket/datenbank/.db");
die komplette Datenbank löschen?
 
Code:
File f = new File("/data/data/Paket/datenbank/.db");
if(f.delete()){
//Löschen hat funktioniert
}else{
//Löschen hat nicht funktioniert
}
 
Context | Android Developers

Vom Context kannst das mal probieren. Hab ich noch nie probiert, hab das bisher immer über eine File-Klasse gelöscht, welche dann den Löschen-Befehl abgibt (siehe cuehrers Vorschlag ^^)


Edit: Nimm aber besser keinen fest in einen String gebundenen Pfad an, sondern löse es besser so:
context.getApplicationInfo().dataDir + "/databases/deineDatenbank.db"

statt
/data/data/deinpaket/databases/deineDatenbank.db
 
Der dataDir ist ja nicht von Gerät zu Gerät verschieden also eigentlich egal, oder?
 
Ja schon richtig.

Aber ich denke dennoch, dass das sauberer ist, vor allem auch falls sich sowas mal ändert. Andere Frage: wie schaut es bei einem Multi-User-System aus? Da sollte Android doch für jeden User ein eigenes data-Directory haben, oder? Wie läuft das da ab?
 
Stimmt auch wieder
dasselbe gilt auch fur Custom Roms, gibt sicher welche, welche ein custom app data dir verwenden

Sent from my GT-I9100 using Android-Hilfe.de App
 
checke erstmal ob in deiner datenbank abfrage ' " und gleich sind oder du auf `` setzt .....

ich habe oft erlebt und auch selber gebaut, das abfragen nicht ganz konform wahren.
 
Zuletzt bearbeitet:
Hab jetzt mehrere Möglichkeiten ausprobiert, jedoch passiert da nichts....

Ich zeige durch ein String Array die Daten aus der Datenbank auf einer ListView an und wenn ich dann auf clear klicke soll die Datenbank leer sein und das Array sodass nichts mehr angezeigt wird....
 

Anhänge

  • re.png
    re.png
    7,1 KB · Aufrufe: 300
Dein "database.delete" ist zum Einen falsch und zum Anderen doch völlig sinnlos, wenn du die Datenbank sowieso löschst.

Schau mal in deinen /data/data/deinpaket/databases, ob die Datenbank dort liegt, ob sie auch den gewünschten Namen hat, lass dir mal den context.getApplicationInfo().datadirblabla-Ordner ausgeben und kontrollier, ob das stimmt. Schmeiß den Debugger an, mit Haltepunkten an den relevanten Stellen etc.

Wo weißt du context einen Wert zu? Mehr Code, mehr Log (bzw. sinnvolle Log, das, was du da dran gehangen hast ist irrelevant, da vermutlich von SwiftKey oder so).
 
Zurück
Oben Unten