![]() |
Datenbank: Oracle • Version: 9i • Zugriff über: ADO
Anwendung friert bei SQL ein
Hallo,
ich habe mir ein kleines Programm gebastelt, mit dem ich SQL-Abfragen auf eine Datanbank absetzen kann. Nun ist mir aufgefallen, wenn eine Abfrage länger dauert und ich in der zwischenzeit mit einem anderen Programm arbeite und dann wieder in mein Abfrageprogramm springe um nachzuschauen, ob das SQL fertig ist, dass sich das Programm scheinbar aufgehangen hat. Es läßt sich erst wieder anzeigen, wenn mein SQL fertig ist. Kennt jemand das Problem? Hat jemand eine Lösung dazu? MfG schuetze09 |
Re: Anwendung friert bei SQL ein
Bekanntes Phänomen. Ist nur über Threads zu lösen.
|
Re: Anwendung friert bei SQL ein
Hi,
ist nicht nur über Threads zu lösen, sondern unter Umständen mit einem gute SQL-Statement ;-)) Lemmy |
Re: Anwendung friert bei SQL ein
@Jasocul: und wie mache ich das?
@Lemmy: :? die SQL-Statement gebe ich aber erst in einem Synedit ein, dass heißt es sind keine vorgefertigten und optimierte. |
Re: Anwendung friert bei SQL ein
Ich bin leider nicht der Thread-Spezi, auch wenn ich die eine oder andere Kleinigkeit damit schon gemacht habe. Aber schau mal unter den Tutorials oder auf
![]() |
Re: Anwendung friert bei SQL ein
@Jasocul: Danke, werde mal schauen.
Ansonsten sind weitere Tipps gern willkommen! MfG schuetze09 |
Re: Anwendung friert bei SQL ein
Hi,
darum geht es nicht. Das Problem ist, dass viele, die von einer Desktop-Datenbank zu nem SQL-Server wechseln nciht verstehen, dass sie dabei die Art der Entwicklung umstellen müssen. Beispiel: War es unter einer Desktop-Datenbank ohne Probleme möglich mittels einer TTable-Komponente oder einer Query (Select * from Tabelle order by 1) durch den kompletten Datenbestand zu "zappen", ist das bei nem SQL-Server der sichere Tod! Bei 10 oder 100 Datensätze spielt das noch keine Rolle, im "Endausbau" beim Kunden kann so eine SQL mal schnell einige Sekunden/Minuten dauern, bis alle Daten einer Tabelle übers Netz auf den Client geschaufelt sind. Aus diesem Grund ist es eigentlich nicht möglich eine konrete Aussage zu treffen. Kannst Du was zur SQL-Anweisung sagen, die so lange dauert? Was macht die? Evtl. ist es auch möglich bei Oracle die Arbeit in eine StoredProcedure zu verlagern, so dass keinerlei Daten mehr übers Netz gezogen werden müssen. Kommt aber wie gesagt auf den Einsatzzweck an. Lemmy P.S: Unter den Demos von Delphi gibts ein Thread-Demo. Schau Dir das mal an, zudem die Hilfe, dann sollte das mit dem Thread auch klappen. Das wirklich komplizierte beim Thread ist vor allem die Synchronisation zwischen THread und Hauptanwendung, was bei DIr allerdings maximal ne Integerzahl für ne ProgressBar o.ä. sein sollte... Lemmy |
Re: Anwendung friert bei SQL ein
@Lemmy:
Die SQL-Anweisung, die über eine komplette Tabelle läuft (select distinct xx, yy form xxyy). Das Phänomen trat eben erst bei dieser Abfrage auf, da die Tabelle mehrere Mio's an Datensätzen hat. Die Ergebnissmenge wurde aber eben so benötigt. Hätte ich die Abfrage nicht so gestellt, hätte ich mein Problem wahrscheinlich erst viel später mitbekommen. MfG schuetze09 |
Re: Anwendung friert bei SQL ein
Guten Morgen,
dann habe ich ja gleich richtig geraten..... Weshalb brauchst Du die Ergebnismenge im Client? Kannst Du mir über die Applikation mehr Angaben machen? Wenn es öffentlich ein Problem ist, dann per Mail oder PN... Lemmy |
Re: Anwendung friert bei SQL ein
@Lemmy:
Ich antworte schonmal für schuetze09. Es geht um ein Programm, wo der Anwender sein SQL-Statement selbst eingeben kann. Einige Dinge sind vorgefertigt andere nicht. Es ist also für den Programmierer nicht möglich, etwas im Voraus zu optimieren. Daher meine Anregung, die Abfragen in einen Thread zu packen, damit man sogenannte Long-Running-Queries abbrechen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz