Thema: Delphi SQL-Fehler abfangen

Einzelnen Beitrag anzeigen

Shylock

Registriert seit: 29. Mär 2004
7 Beiträge
 
Delphi 7 Professional
 
#6

Re: SQL-Fehler abfangen

  Alt 5. Apr 2004, 11:15
Hallo zusammen,

zu dem eben geposteten Quelltext ersteinmal ein paar Anmerkungen:

1. Ein ExecSQL führt eine SQL Anweisung aus, die keine Datenmenge öffnet. Also z.B. UPDATE oder ein INSERT.
2. Die Methode open() dagegen wird bei einem SELECT angewendet.
3. Beides zusammen macht keinen Sinn.
4. Wenn ein TQuery Objekt benutzt wird, benötigt man in der Regel kein Dataset. Man kann direkt auf dem TQuery arbeiten.
Dieser Code müßte eigentlich beide oben beschriebenen Probleme lösen:

Delphi-Quellcode:
var
 ok :boolean;
begin
    try
        try
           with DBQuery do begin
                close;
                sql.clear;
                sql.Add('SELECT * FROM copyright');
                open;
                while not EOF do begin
               
                      if FieldByName('spalte').asString = 'wertthen ok := true;
                      next;
                end;
           end;
        except
           on e: Exception do begin
              MessageDLG('Fehler!. Tabelle copyright fehlt?'+#13+e.message,mtError,[mbOk],0);
              //Fehlerbehandlung, Programmende, oder was sonst passieren soll, wenn was schiefgeht
              exit;
           end;
        end;
     finally
            DBQuery .close; //WICHTIG Datenmenge wieder schließen
     end;
end;
Und jetzt noch ein Hinweis:
Bei der oben erwähnten Verwendung von TSession.getTableNames sollte man vorsichtig sein. Einem Kollegen von mir ist aufgefallen, dass diese Methode eine eigene Datenbankverbindung erstellt und diese nicht mehr schließt. Das kann zu Lizenzproblemen führen. Man hat als Programmierer auch keine Möglichkeit diese Verbindung "von Hand" wieder zu schließen.

Alle Angaben ohne Gewähr. Der Code wurde nicht getestet
  Mit Zitat antworten Zitat