Entwickler-Ecke

Datenbanken - FDQuery dropt Out of Memory Error


NOS1971 - Sa 10.05.14 21:18
Titel: FDQuery dropt Out of Memory Error
Bei der Nutzung einer FDQuery Compo erhalte ich ständig einen Out of Memory Error ... Ich möchte den Datensatz finden mit einer entsprechenden URL ... sobald ich den Teil inkl WHERE weglassen ist der fehler weg aber es erfüllt ja nicht den zweck :-)

Hat jemand eine idee ? Im TempURLString ist eine url als string wie man es vom browser kennt.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
      // check if item exists in the database
      if CurrentAddItem.FieldCount > 0 then CurrentAdditem.ClearFields;
      CurrentAddItem.Params.Clear;
      SQLExecString := 'SELECT * FROM ResultURLTable WHERE URL = ' + QuotedStr(TempURLString) + ';';
      CurrentAddItem.Open(SQLExecString);
      if not CurrentAddItem.IsEmpty then
      begin
       // item found
       CurrentAddItem.First;


Nur zur Info


Delphi-Quelltext
1:
SQLExecString := 'SELECT * FROM ResultURLTable WHERE STATUS = -1;';                    


funktioniert problemlos


jaenicke - So 11.05.14 15:52

Wie sieht denn der Stacktrace bei der Exception aus?
Benutzt du das vielleicht irgendwo im Thread?


NOS1971 - So 11.05.14 18:23

Ja ... ich nutze beide Abfragen im Thread aber nur die ohne "String" läuft .... StackTrace ? Habe ich noch nie mit gearbeitet ... nach was muss ich ausschau halten ?


jaenicke - So 11.05.14 19:23

user profile iconNOS1971 hat folgendes geschrieben Zum zitierten Posting springen:
Ja ... ich nutze beide Abfragen im Thread
Dann schau dir einmal diesen Link an:
http://docwiki.embarcadero.com/RADStudio/XE5/de/Multithreading_(FireDAC)
Du musst vor allem darauf achten, dass die Verbindung nicht von zwei Threads gleichzeitig benutzt wird.

user profile iconNOS1971 hat folgendes geschrieben Zum zitierten Posting springen:
aber nur die ohne "String" läuft .... StackTrace ? Habe ich noch nie mit gearbeitet ... nach was muss ich ausschau halten ?
In Delphi siehst du den Stacktrace (standardmäßig) oben links, wenn das Programm gerade angehalten ist. Das ist das, in dem du siehst in welcher Methode du gerade bist. Mit der JCL und der Unit darin JclDebug kannst du auch einen im Programm erstellen, z.B. in einem try..except.


NOS1971 - Mi 14.05.14 06:54

So ... nach einem netten Wochenende mit Magen/Darm bin ich wieder dabei ... habe umgestellt auf Connection Pooling und das ist ok soweit ... das Out of Memory kam soweit ich das nun beurteilen kann aus dem MainThread wo meine LOG Messages ankommen ... da mache ich mich erstmal dran das Problem zu finden ... mal schauen wie wiet ich dann komme.

Vielen Dank bis hierher ...

to be continued :-)