Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQLConnection in Konsolenanwendung (https://www.delphipraxis.net/29472-sqlconnection-konsolenanwendung.html)

I_need_help 9. Sep 2004 13:52


SQLConnection in Konsolenanwendung
 
Hallo zusammen,

da ist wieder ein Pferdefuß in meinem Prog, der mich nicht weiterkommen lässt:

Ich hab eine kleine Konsolenanwendung geschrieben, die eine Verbindung zur Oracle-DB öffnen soll und dort Tabellen auslesen und deren Inhalt in Dateien schreiben soll. Alles soweit sogut, bis auf das "Ding mit der Datenbank".

Per SQLConnection versuche ich, auf die DB zu kommen, erhalte beim Kompilieren allerdings schon die Warnung, dass SQLConnection eventuell nicht richtig initialisiert ist. Folgendes hab ich geschrieben:

Delphi-Quellcode:
SQLConnection := TSQLConnection.Create(SQLConnection);
Create will hier ja eine Komponente haben, nur weiß ich an der Stelle leider nicht, welche (deshalb steht bei mir auch SQLConnection in der Klammer).

Beim Ausführen knallt das Programm dann auch an dieser Stelle und wirft eine EAccessViolation (Speicherzugriffsfehler).

Wo ist der Fehler??

Gruß von i_need_help

Bernhard Geyer 9. Sep 2004 13:58

Re: SQLConnection in Konsolenanwendung
 
Delphi-Quellcode:
SQLConnection := TSQLConnection.Create(nil);
Du kannst deine neu erzeugte Komponente nicht selbst als Owner angeben.
Abschließend mußt Du selbst mittels
Delphi-Quellcode:
SQLConnection.Free;
wieder für die Freigabe sorgen.

I_need_help 9. Sep 2004 14:00

Re: SQLConnection in Konsolenanwendung
 
Hatte ich mir fast gedacht...

Danke, werd es ausprobieren!! :-D

I_need_help 9. Sep 2004 14:07

Re: SQLConnection in Konsolenanwendung
 
Funktioniert! Danke!

Die Warnung im Compiler ist zwar immer noch da (zeigt jetzt auf SQLConnection.Free), aber das Programm läuft ohne Fehler durch und macht auch genau das, was es soll. Das ist erst einmal die Hauptsache.

DANKE DANKE

Gruß i_need_help

Bernhard Geyer 9. Sep 2004 14:30

Re: SQLConnection in Konsolenanwendung
 
Zitat:

Zitat von I_need_help
Die Warnung im Compiler ist zwar immer noch da (zeigt jetzt auf SQLConnection.Free), aber das Programm läuft ohne Fehler durch und macht auch genau das, was es soll. Das ist erst einmal die Hauptsache.

Etwas Code bitte.

Ich denke Du wirst SQLConnection evtl. in einem if-Zweig anlegen und free auserhalb dieses. Deshalb gibt es auch einen Ausführungszweig, welcher SQLConnection nicht initalisiert.

Falls Du try..finally-Blöcke verwendest

Delphi-Quellcode:
  try
    SQLConnection := TSQLConnection.Create(nil); <- Außerhalb von try...finally-Block!!
    try
      ...
    finally
      SQLConnection.Free;
    end;
  except
    ...
  end;

I_need_help 9. Sep 2004 14:40

Re: SQLConnection in Konsolenanwendung
 
Es stand in der Tat an ungünstiger Stelle. Doch nun hab ich die Angelegenheit gleich noch viel "eleganter" gelöst: Ich hab den kompletten Datenbank-Connect in eine extra Unit geschrieben. Die Fehlermeldung ist weg! :-D :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr.

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