SQLite Datensatz löschen

f10

Aktives Mitglied
Hallo zusammen,

ich habe mir eine Swing-Applikation geschrieben in der ich Daten aus einer SQLite Datenbank in einer JTable anzeige. Nun kann ich die Daten auch löschen. Zumindest während der Laufzeit. Denn wenn ich die Action für das Löschen des Datensatzes ausführe, dann ist er auch für meine Anwendung gelöscht, doch schaue ich mit dem SQLite-Manager in die Datenbank, dann ist der Datensatz noch verhanden, und auch sobald ich meine Anwendung neu starte, ist der Datensatz wieder da. Wie kann das sein? Kann mir das jemand erklären?

Die Connection schließe ich, wenn ich das Fenster schließe. Allerdings reiche ich die Connection innerhalb der Anwendung hin und her, kann es damit zusammenhängen? Wie funktioniert das denn bei SQLite? Werden Transaktionen erst in der Datenbank persitent gespeichert, wenn diese geschlossen wird, schließlich ist es auch nur eine Datei. Wird während der Laufzeit eine temporäre Datenbank erzeugt? Wieso sind die Daten innerhalb meiner Anwendung gelöscht, aber in der Datenbank nicht? Hat jemand eine Vermutung?

SQL was per connection.executeUpdate() geschickt wird, sieht wie folgt aus:

Code:
DELETE FROM table_name WHERE text = 'XYZ';

LG
f10
 

Joose

Top Contributor
Fliegt vielleicht eine Exception, welche nicht ausgegeben/geloggt wird?
Hast du das Statement schon mal direkt gegen die Datenbank probiert?
Wird das Statement überhaupt ausgeführt?
Hast du den Debugger schon verwendet?
 

f10

Aktives Mitglied
Fliegt vielleicht eine Exception, welche nicht ausgegeben/geloggt wird?
Hast du das Statement schon mal direkt gegen die Datenbank probiert?
Wird das Statement überhaupt ausgeführt?
Hast du den Debugger schon verwendet?

Exceptions fliegen nur, wenn ich Datensätze hinzufüge, die schon vorhanden sind wegen der UNIQUE Clause.

Auf der Datenbank funktioniert es, hab es mir auch von der Management Software mal generieren lassen, dachte zuerst SQLite hat einen besonderen SQL Dialekt, aber ist genau das gleiche Statement.
Ob es ausgeführt wird, ist die Frage, innerhalb der Anwendung ist der Datensatz ja gelöscht, und das realisiere ich eigentlich nur mit einem löschen in der Datenbank und dann die Anzeige neu laden. Also ich entferne nicht in der Anwendung eine Objektrepresentation oder ähnliches.

Welchen Debugger meinst du? Die Methode wird ausgeführt, hab ich mit System.out.println()'s überprüft.
 

Thallius

Top Contributor
Also neue Einträge kannst du hinzufügen und das bleibt auch wenn du die Anwendung beendest und wieder startest. Nur beim Löschen geht es nicht?
 

Thallius

Top Contributor
Das macht keinen Sinn. Was passiert wenn du nach dem Löschen erst noch was einfügst und dann beendest und neu startest? Ist dann der gelöschte UND der neue Eintrasg da?
 

f10

Aktives Mitglied
Das macht keinen Sinn. Was passiert wenn du nach dem Löschen erst noch was einfügst und dann beendest und neu startest? Ist dann der gelöschte UND der neue Eintrasg da?

Ich glaube, wir kommen dem Fehler auf die Spur. In diesem Fall, ist nur der 2. Eintrag da. Der gelöschte, bleibt gelöscht.

Welche Gründe kann das haben? Einen neuen Eintrag realisiere ich über ein JDialog dem ich die Connection aus meinem Hauptframe mitgebe. Hängt es damit zusammen?
 

Thallius

Top Contributor
Bei sqLite kannst du nicht mit mehreren Connections arbeiten. Das ist generell erstmal nicht multi-user fähig, was du bei mehreren connections ja quasi machen würdest. Du must schon immer die gleiche eine Connection benutzen oder diese jedesmal auf- und wieder zumachen
 

f10

Aktives Mitglied
Bei sqLite kannst du nicht mit mehreren Connections arbeiten. Das ist generell erstmal nicht multi-user fähig, was du bei mehreren connections ja quasi machen würdest. Du must schon immer die gleiche eine Connection benutzen oder diese jedesmal auf- und wieder zumachen

Theoretisch ist es ja nur eine, die halt durchgereicht wird von Frame zu Dialog und zurück etc


Also doch, weil ich die Connection weiterreiche?

Heißt bei SQLite muss ich jedesmal eine neue Connection zur Datenbank aufbauen?

Gibt es eine Erklärung dazu, warum das nicht geht? Hängt das mit den Dateiattributen zusammen?
 

Thallius

Top Contributor
Nein wenn Du sie einmal aufmachst und am Ende schliest und dazwischen immer korrect weiter gibst ist das die richtige Lösung.
 

f10

Aktives Mitglied
Weiterreichen im Sinne von

Code bspw in MyFrame.java
Java:
public Connection getConnection(){
return this.connection;
}

Code bspw in MyDialog.java
Java:
public MyDialog(MyFrame myFrame){
this.connection = myFrame.getConnection();
}

?
Dann hab ich es eigentlich auch so gemacht...
 

Thallius

Top Contributor
Schau dir halt einfach mal genau an was anders ist als beim Insert. Irgendwas muss fehlen. Vielleicht machst du die Connectiohn danach doch nicht zu oder was auch immer. Im Notfall must du halt step by step mit dem Debugger durch.
 

f10

Aktives Mitglied
Schau dir halt einfach mal genau an was anders ist als beim Insert. Irgendwas muss fehlen. Vielleicht machst du die Connectiohn danach doch nicht zu oder was auch immer. Im Notfall must du halt step by step mit dem Debugger durch.

Ja, notfalls fliegt halt nochmal ein großer Brocken Code raus. Danke jedenfalls für die Unterstützung.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Mit Button einen Datensatz löschen Datenbankprogrammierung 2
C Hibernate Datensatz löschen Datenbankprogrammierung 2
U Nur den ersten Datensatz löschen wenn mehrere gleiche da sind Datenbankprogrammierung 2
Java.getSkill() Datensatz / Tupel automatisch nach xy Tagen / Stunden löschen Datenbankprogrammierung 7
M Datensatz aus Datenbank löschen Datenbankprogrammierung 6
S sql query, um bestimten datensatz zu finden Datenbankprogrammierung 33
D MySQL Neuen Datensatz mit "new" anlegen Datenbankprogrammierung 16
E Nur der letzte Datensatz wird in Tabelle geschrieben Datenbankprogrammierung 4
M Serienbrief aus Datensatz Datenbankprogrammierung 2
E Aufzählung liest nur ersten Datensatz Datenbankprogrammierung 14
S SQLite Selectanfrage lieft datensatz aber cursor ist leer Datenbankprogrammierung 2
M Designfrage zu Rows die sich auf einen Datensatz derselben Tabelle beziehen Datenbankprogrammierung 7
A MySQL Datensatz wird nicht richtig gelöscht Datenbankprogrammierung 6
L SQLite fügt nur den ersten Datensatz ein Datenbankprogrammierung 2
M Access Datensatz beinhaltet ESC-Zeichen Datenbankprogrammierung 3
C Gleichzeitiger Zugriff auf Datensatz Datenbankprogrammierung 5
Eldorado MySQL Hibernate - neuen Datensatz einfügen Datenbankprogrammierung 2
M Datensatz exklusiv öffnen Datenbankprogrammierung 5
M design issue: datensatz lange locken? Datenbankprogrammierung 10
T Theoriefrage : mehrere User vs gleichen Datensatz Datenbankprogrammierung 4
K Schnelle Methode um zu testen ob Datensatz existiert Datenbankprogrammierung 9
R datenbank - datensatz sucjen Datenbankprogrammierung 4
-MacNuke- Hibernate löscht jeden Datensatz einzeln? Datenbankprogrammierung 12
V Doppelten Datensatz vermeiden? Datenbankprogrammierung 7
S Überprüfen ob Datensatz existiert Datenbankprogrammierung 2
P SQL, nur jeder 5. Datensatz Datenbankprogrammierung 9
B Eingefügter Datensatz erneut abfragen. Datenbankprogrammierung 10
J Anzeige Button gibt immer nur 1. Datensatz aus DB aus Datenbankprogrammierung 8
M Letzter Datensatz mit auslesen(brauch kleinen Tipp) Datenbankprogrammierung 15
N SELECT: Datensatz sperren Datenbankprogrammierung 6
C vorheriegen oder letzten Datensatz Datenbankprogrammierung 2
K ResultSet: Erste Zeile ausgeben, Datensatz in String speiche Datenbankprogrammierung 13
W Nur ein Datensatz wird angezeigt, obwohl mehrere existieren Datenbankprogrammierung 7
C Datensatz einfügen und quittierung Datenbankprogrammierung 31
H letzter Datensatz wird nicht gefunden? Datenbankprogrammierung 6
F suche MySQl-Befehl um Datensatz an Tabellenende zu schreiben Datenbankprogrammierung 2
S gesamte Tabelle löschen Datenbankprogrammierung 2
R PostgreSQL JPA - Löschen und orphanRemoval Datenbankprogrammierung 6
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
B Fortlaufende Nummer - Was tun bei löschen? Datenbankprogrammierung 6
R eclipselink - referenzierte Entity löschen Datenbankprogrammierung 0
P Indizes / Fremdschlüssel löschen Datenbankprogrammierung 2
H Oracle Aus Datenbank löschen Datenbankprogrammierung 6
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
A Ausgewählten Jtable Eintrag aus Db löschen Datenbankprogrammierung 9
reibi Derby/JavaDB Derby DB löschen Datenbankprogrammierung 5
P JPA- Entities bleiben nach dem Löschen (unsichtbar?) in der Datenbank Datenbankprogrammierung 6
J Datensätze löschen Datenbankprogrammierung 6
O Löschen vieler Datensätze mit Hibernate Datenbankprogrammierung 11
M Datenbankeintrag bleibt nach Löschen in JSP vorhanden Datenbankprogrammierung 8
D Mit Trigger Tupel löschen verhindern Datenbankprogrammierung 3
L MySQL Einträge löschen schlägt fehl Datenbankprogrammierung 2
F hibernate_seqeunce reseten (löschen) Datenbankprogrammierung 2
J MySQL Löschen von Rows mit JDBC Datenbankprogrammierung 9
M HSQLDB 2.0 - wie tmp-Verzeichnis löschen Datenbankprogrammierung 2
turmaline [Hibernate] @OneToOne: Löschen einer referenzierten Instanz Datenbankprogrammierung 2
G Oracle Zeile löschen Datenbankprogrammierung 2
C SQL String zwei Tabellen vergleichen und gleiche Zeile löschen Datenbankprogrammierung 25
D SQL : Objekte individuell löschen können Datenbankprogrammierung 5
R JPA, Spring, löschen einer Entity Datenbankprogrammierung 2
H MySQL Einträge löschen Datenbankprogrammierung 5
Antoras Zeile aus DB löschen und ID runterzählen Datenbankprogrammierung 8
C Objekte aus Datenbank löschen Datenbankprogrammierung 6
F Löschen einer Zeile Datenbankprogrammierung 4
G Mit Java-Programm Datenbank löschen/neu anlegen Datenbankprogrammierung 5
G Löschen eines Eintrages verbunden mit JList Datenbankprogrammierung 5
E SQL-Frage (Löschen aller Datensätze) Datenbankprogrammierung 9
P Tabellen löschen Datenbankprogrammierung 4
O Size ResultSet betrachtete Zeilen "löschen" Datenbankprogrammierung 5
G MySQL Zeile löschen und gleich Optimieren Datenbankprogrammierung 6
T [jdbc] einen Eintrag aus mehreren Tabellen löschen (Batch) Datenbankprogrammierung 3
G mySQL: kaskadierendes Löschen Datenbankprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben