Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Anwendung friert bei SQL ein (https://www.delphipraxis.net/44028-anwendung-friert-bei-sql-ein.html)

schuetze09 12. Apr 2005 11:06

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

Jasocul 12. Apr 2005 11:27

Re: Anwendung friert bei SQL ein
 
Bekanntes Phänomen. Ist nur über Threads zu lösen.

Lemmy 12. Apr 2005 11:34

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

schuetze09 12. Apr 2005 11:42

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.

Jasocul 12. Apr 2005 11:52

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 Luckies Homepage. Dort sollte auf jeden Fall etwas zu finden sein.

schuetze09 12. Apr 2005 11:58

Re: Anwendung friert bei SQL ein
 
@Jasocul: Danke, werde mal schauen.

Ansonsten sind weitere Tipps gern willkommen!

MfG
schuetze09

Lemmy 12. Apr 2005 17:09

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

schuetze09 12. Apr 2005 18:10

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

Lemmy 13. Apr 2005 06:43

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

Jasocul 13. Apr 2005 08:06

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 10:31 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz