wechsle doch allein schon testweise auf eine einfachere Query
„update Table_ST S set S.EVAL = 1 where id = 5“
oder gar ein Select
„select count(*) from Table_ST“
dann freilich kein execute() mehr
ruhig auch auf eine parallel komplett neue leere Test-Tabelle X, um alle Probleme wie blockierende offene Transaktionen auszuschließen
das wird nicht direkt dein Problem lösen, aber zusätzliche Informationen sammeln:
was geht alles, bei welchem Schritt genau geht es nicht mehr?
liegt es an der Tabelle, liegt es an Update vs. Select, liegt es am LIKE?
wahrscheinlich musst du eh parallel in die DB schauen,
ein Tool um dort laufende Queries usw. zu erkennen wäre hilfreich,
bekannt/ vorhanden? welche DB?
das klingt ja nicht sehr vertrauensvoll,
Kenntnis vom Programmfluss? wer führt diese Query aus, eine GUI nach einem Button-Klick oder irgendein laufender Thread?
kontrolliere ob die GUI dauerhaft blockiert (gehen anderen Buttons danach?)/ lasse den Thread regelmäßg loggen, was immer der normalerweise danach macht,
da solltest du Klarheit schaffen
executeUpdate() statt execute() ist genauer, aber das sollte gehen, gewiss,
siehe auch Tutorials und wie gesagt kann man genau solche Teilpunkte viel besser abklären, wenn man nebenher auf einfachere Anwendungsfälle,
etwa ein Update in einer neuen Dummy-Tabelle (ohne kompliziere Indexe, Primary Key, andere Zugriffe im Programm usw.) oder auch dasselbe Update schon ohne LIKE, wechselt
genauer nachgeschaut ist das getResultSet() danach allerdings nicht sinnvoll,
dürfte hoffentlich Fehlermeldung geben,
zur Sicherheit solltest du aber nach execute() und vor diesem Aufruf eine einfache Ausgabe einbauen, nicht dass es doch an diesem Befehl liegt…
gut, das hätte nun auch jeder sehen können, kein Lobeslied,
aber zumindest geht es voran, also die „fertig“-Ausgabe bestätigt eben, dass es fertig ist,
mit dem finally wird Exception-Ausgabe übersprungen (edit: oder auch nicht, die Exception müsste dann weiter geworfen werden…),
so geht es jedenfalls besonders übersichtlich:
edit: gut möglich allein wegen ResultSet,
immer noch hast du auch keine Ausgabe vor dem ResultSet-Aufruf, aber die Fehlermeldung klärt das womöglich auch schon
[QUOTE=garaq]ja, auf der Tabelle ist ein Index[/QUOTE]Ist CN der Primärschlüssel?
Außerden hast Du ja einen Teistring.-Vergleich, da wird der Index nicht ziehen…
Oracle kennt functionbased index. geht sowas in MySQL auch?
Danke, habs hinbekommen… bin nicht sicher was falsch war, aber ich denke am ehesten haben mit ’ ’ im SQL Statement gefehlt was er aber nicht als Fehler erkannt hat.