Datenbankeintrag bleibt nach Löschen in JSP vorhanden

Megatim

Mitglied
Hallo liebe Leute!

Erstmal ein großes Danek an alle die immer fleißig den Usern helfen! Ich konnte dadurch shcon viele Probleme lösen, ohne eine einzige frage formulieren zu müssen! Nun ist es aber doch mal soweit dass ich nichts gefunden habe und selber ran muss. Also los:

Ich habe eine JSP Seite, welche per SELECT diverse Daten aus der Datenbank liest und als Liste darstellt. Jeder Eintrag der Liste kann einzeln gelöscht werden. Das Löschen funktioniert folgendermaßen:

1. JavaScript Funktion fragt den Nutzer ob er den eintrag wirkjlich löschen möchte
2. Falls nein passiert nichts, falls ja wird ein redirect auf die gleiche Seite ausgeführt, allerdings mit einem Parameter "delete" hinten dran sowie der ID des zu löschenden Eintrages:

HTML:
location='meineSeite.jsp&delete='+deleteID;

3. Der Parameter löst eine Java-Methode aus, welche den Eintrag aus der DB löscht (was einwandfrei funktioniert).
4. Die JSP Seite wird nach dem Löschen des Eintrags ganz regulär weitergeladen, also mit SELECT Anfrage, welche die Liste der Einträge erställt usw.

Das Problem ist nun, dass nach dem Löschen der Eintrag zwar Zweifelsfrei aus der Datenbanktabelle gelöscht ist, der SELECT den gelöschten Eintrag jedoch weiterhin anzeigt. Führe ich einen Reload der Seite durch, ist der gelöschte Eintrag dann verschwunden.

Ich hatte das Problem schon mit einem Workaround gelöst, indem ich ein 2 Sekunden Delay vor den SELECT geschoben habe, allerdings ist das die Holzhammermethode und funktioniert auch nur in 90% der Fälle.

Ist jemandem schonmal sowas begegnet? Greift da die JSP Seite auf die Tabelle zu bevor der Löschvorgang beendet ist?

Danke für eure Hilfe!
 

bERt0r

Top Contributor
Soweit ich mich erinnere ist ein HTTP Server ist so aufgebaut, dass sämtliche Html Objekte quasi gleichzeitig in eigenen Threads erzeugt und an den Client übertragen werden. Wenn du jetzt zwei Funktionen in seperaten jsp Tags hast, werden die quasi gleichzeitig bearbeitet, und es kann sein, dass das select aufgerufen wird, während das drop noch läuft.
Lösung: die zwei Funktionen nacheinander aber in einem jsp skript tag ausführen.

Ich hab das ganze jetzt mal geraten, weil du ja keinen Code gepostet hast, das war das erste das mir bei deinen Symptomen in den Sinn kam.
 
M

maki

Gast
Zeig doch mal den Code... vor allem ist die Reihenfolge und das Transaktionshandling interessant.
 

ARadauer

Top Contributor
jetzt zwei Funktionen in seperaten jsp Tags hast, werden die quasi gleichzeitig bearbeitet,
Ganz falsch! JSP wird am Server ausgeführt, das hat gar nix damit zu tun, das der Browser verschiedene Resourcen parallel lädt..

Was ist es für eine Datenbank? Kollege hat mir vor kurzem von sowas erzählt, dass eine H2 kurz nach dem Commit die Daten noch nicht hatte... 200 ms später waren sie da...
 

Megatim

Mitglied
Hallo und Danke für die schnelle Antworten, is ja echt super hier :)

Also die Datenbank ist der SQL Server 2005, der AS ist ein Glassfishv1.

Code posten stellt sich als etwas schwer heraus, da das kein Privates Projekt ist sondern was von der Arbeit. Ich weiß dass es das sehr schwer macht mir zu helfen, aber da kann cih leider nix machen :(
 

bERt0r

Top Contributor
Es geht hier nicht um die Übertragung zum Client, sondern in der parallelen Abarbeitung der JSP tags. Der Webserver erstellt soweit ich weis für jedes JSP tag ein eigenes Servlet und die laufen dann parallel ab. Wenn 2 solche Servlets jetzt auf eine Datanbank zugreifen, ist das erstellen der Servlets wesentlich schneller als der Zugriff auf die Datenbank.
 
M

maki

Gast
Es wird sicherlich nicht pro Tag ein Servlet erzeugt, sondern pro JSP.
Ansonsten dürfen Optimierungen auch nicht plötzlich Multithreadingprobleme erzeugen.
 

bERt0r

Top Contributor
Weil ichs grad in einem andern Thread gesehen habe, deine Datenbank-Funktionen sind nicht zufällig so aufgebaut:
Java:
public void doStuff(String stuff)
{
//Erzeuge Connection
//Erzeuge Statement
//Execute stuff
//Close Connection & Statement
}
Wenn du nämlich fürs drop und fürs select unterschiedliche Connections & Statements verwendest, ist die DB mit dem Drop noch nicht fertig, wenn du mit deinem Select schon daherkommst.
Daher mein Rat vorher das ganze in ein Skript zu stecken, kommt aber auf deine Datenbank handler Architektur an ob du eine Connection & Statments im jsp halten willst, oder ob der Dbhandler sich zentral eine Connection merken soll.
z.B:
HTML:
<% Connection c=DBHandler.connect();
Statement stmt=c.createStatement();
DBHandler.drop(stmt,"5 from emp");
DBHandler.select(stmt,"* from emp");
stmt.close();
c.close();%>
 

Megatim

Mitglied
Danke bERt0r, das ist ein super Tipp!

Es sind tatsächlich verschiedene Connections und Statements in Verwendung. Ich habe ausserdem meine JPS gerade auf Threadsafe=false gesetzt, und nun "scheint" es zu gehen. Ich muss aber noch weiter testen bevor etwas spruchreif ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kandum MySQL Anzahl gefundener Datensätze bleibt gleich, auch wenn mehr existieren und ausgegeben werden Datenbankprogrammierung 3
N Connection bleibt null Datenbankprogrammierung 7
H javaw bleibt bei hsqldb hängen Datenbankprogrammierung 12
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Z MySQL "Too many connections" auch nach schliessen der Connections. Datenbankprogrammierung 10
J Sql Anfrage nach einer Zeile beenden Datenbankprogrammierung 6
ruutaiokwu SQL-Dump nach MariaDB laden? Datenbankprogrammierung 6
T JPA: Nach String statt Primärschlüssel suchen Datenbankprogrammierung 9
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
S MySQL JTable zeigt nach Datenbankabfrage eine Spalte zu viel an Datenbankprogrammierung 0
D MySQL Suche nach Max Value in einer Tabelle Datenbankprogrammierung 7
M SQLite Suche nach String Datenbankprogrammierung 4
G PostgreSQL Nach Monaten auf einmal ClassNotFound-Exception Datenbankprogrammierung 3
C MySQL JTable in JScrollPane nach insert aktualisieren Datenbankprogrammierung 3
J SQLite Datenverlust nach beenden des Programmes Datenbankprogrammierung 21
J Fehlende DatenbankView nach einbeziehen von JDBC Datenbankprogrammierung 3
B Leerzeichen nach Umlaut -> Sichtbar erst nach Query! Datenbankprogrammierung 6
D Zeit von SQL nach Java Datenbankprogrammierung 2
M DB-Zugriff funktioniert nach JAR-Erstellung nicht mehr Datenbankprogrammierung 3
AssELAss Oracle Suche nach Umlauten Ä und Ae ermöglichen Datenbankprogrammierung 11
G HSQLDB Inserts/Updates sind nach Neustart der Anwendung Datenbankprogrammierung 1
S MySQL Nach wiederholtem Update falsche Werte (im Speicher?) Datenbankprogrammierung 1
Z PDF nach Formate sortieren Datenbankprogrammierung 3
A Nach Export mysql Verbindung zur Datenbank nicht möglich, was tun? Datenbankprogrammierung 7
F Java SQL Syntax Error erst nach mehrmaligen Aufrufen Datenbankprogrammierung 3
R vor/nach INSERT mysql-SETS absetzen Datenbankprogrammierung 2
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
E Abfrage nach existierender SQL-Tabelle Datenbankprogrammierung 7
P MySQL Verbindung nach außen sehr langsam Datenbankprogrammierung 4
S Nochmals: ID ermitteln nach Insert Datenbankprogrammierung 2
P JPA- Entities bleiben nach dem Löschen (unsichtbar?) in der Datenbank Datenbankprogrammierung 6
GianaSisters MS SQL unter Netbeans OK - nach konvertieren Absturz Datenbankprogrammierung 6
R SQL Abfrage, je nach ausgewählten Parametern Datenbankprogrammierung 11
I Zugriff auf Datenbank nach Erstellen einer Executable Jar Datei verweigert Datenbankprogrammierung 10
0 Filtern nach mehreren Kriterien Datenbankprogrammierung 4
T filtern nach expliziten Worten trotz LIKE '%Wort%' Datenbankprogrammierung 2
E Nach Server wechsel Datenbank fehler ?!? Datenbankprogrammierung 3
F SQL ordnen nach zueinander in Verhältnis gesetzten Spaltenwerten Datenbankprogrammierung 11
J SQL: Sortierung nach Wortlänge Datenbankprogrammierung 2
Java.getSkill() Datensatz / Tupel automatisch nach xy Tagen / Stunden löschen Datenbankprogrammierung 7
T JPA: NullPointerException nach persist Datenbankprogrammierung 3
T Eintragung in einer Spalte nach Abfrage Datenbankprogrammierung 11
E Hibernate Session closed nach Transaction commit? Datenbankprogrammierung 7
K Rundungsfehler bei Gleitkommazahlen von Java nach SQL Datenbankprogrammierung 2
B Spaltennamen von MySQL Datenbank nach Java auslesen Datenbankprogrammierung 10
alexpetri Problem mit jdbc MS Access / nach 670 inserts ist schluss. Datenbankprogrammierung 4
tfa Apache DBCP: Reconnect nach Timeout? Datenbankprogrammierung 3
M mySQL zugriff funktionert nach ca4 stündiger laufzeit nicht Datenbankprogrammierung 6
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
M sql-code für suche in tabelle nach höchster transaktionsnr Datenbankprogrammierung 12
T ibatis + "generated p-key" nach insert? Datenbankprogrammierung 24
G Herausfinden des Primary Keys nach INSERT-Kommando? Datenbankprogrammierung 4
T Tabellen aus Datenbank 1 nach Datenbank 2 Datenbankprogrammierung 2
C Resultset nach connection close weiterreichen Datenbankprogrammierung 5
E JDBC, ForwardOnly bei ResultSet nach Uebergabe Datenbankprogrammierung 4
G Suchen nach Autowerten in Access-DB Datenbankprogrammierung 20
D JAVA hängt nach SQL Abfrage Datenbankprogrammierung 7
I Nach export zur .jar keine verbindung mehr Datenbankprogrammierung 7
M Datenbankverbindung bricht nach ca. 12 Stunden Verbindung ab Datenbankprogrammierung 3
R Nach String in MySQL datenbank suchen Datenbankprogrammierung 7
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
G File nach Blob konvertieren ? Datenbankprogrammierung 6
M Abfrage trennt Ergbnis eines Atrributes nach den Leerzeichen Datenbankprogrammierung 4
F Treiber nachladen oder nach Bedarf Datenbankprogrammierung 4
P Primärschlüssel direkt nach der Eingabe wieder auslesen Datenbankprogrammierung 7
R MySQL Syntax für suche nach Textteil Datenbankprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben