Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL connection Fehler abfangen (https://www.delphipraxis.net/196660-sql-connection-fehler-abfangen.html)

Pet04 7. Jun 2018 07:31

Datenbank: MSSQL • Version: 2008R2 • Zugriff über: Ado

SQL connection Fehler abfangen
 
Hallo,

ich habe folgendes Problem.
Ich möchte meine Datenbankverbindung anpassen und ein Dialog (ÄHNLICH wie UDL Datei) für den Bunutzer anzeigen lassen wenn die Datenbankverbindung fehl schlägt.

Ist zB. der DB-Name falsch kommt eine Fehlermeldung von Windows/SQLServer und das finally wird nicht mehr ausgeführt.

Benutze MSSQLServer 2008R2 Express



Delphi-Quellcode:
 // Verbindungsaufbau zum SQL Server
  ADOC_ChristDB.Connected := false;
  ADOC_ChristDB.ConnectionString := SQL_Server;
    try
    ADOC_ChristDB.open;
  finally
    if ADOC_ChristDB.Connected = false then
    begin
      ADOC_ChristDB.close;
      OpenSQLServerForm := TOpenSQLServerForm.Create(Application); // 
      OpenSQLServerForm.ShowModal;    
      //Application.Terminate;
    end;
  end;
Danke für eure Hilfe

Grüße Pet

timog 7. Jun 2018 07:38

AW: SQL connection Fehler abfangen
 
Was passiert, wenn Du das try eine Zeile nach oben schiebst? Wäre ein except auf bestimmte Fehler hier nicht besser?

Jasocul 7. Jun 2018 07:44

AW: SQL connection Fehler abfangen
 
Zunächst mal müsstest du das open nach dem try machen. Da das open den Fehler verursacht, aber bei dir nicht im Schutzblock steht, kann das Finally nicht greifen.

Außerdem:
Nicht
Delphi-Quellcode:
if ADOC_ChristDB.Connected = false then
sondern
Delphi-Quellcode:
if not ADOC_ChristDB.Connected then
Das wurde im Forum schon so oft besprochen, dass ich es hier nicht nochmal erkläre.

Pet04 7. Jun 2018 08:03

AW: SQL connection Fehler abfangen
 
Sorry try ist verrutscht und ist vor open.
Mit except tritt das gleiche Problem auf.

Mit "IF not" ändert sich auch nichts.

Wenn ich einen Haltepunkt bei " ADOC_ChristDB.open;" setze und debugge funktioniert es.

Jasocul 7. Jun 2018 08:20

AW: SQL connection Fehler abfangen
 
Zitat:

Zitat von Pet04 (Beitrag 1404135)
Mit "IF not" ändert sich auch nichts.

Das war generell gemeint und nicht auf das aktuelle Problem bezogen. Ein Vergleich auf True oder False kann in seltenen Fällen zu unerwarteten Fehlern führen.

Zum Thema:
Wenn die Connection fehlgeschlagen ist, also Connected auf False steht, solltest du kein Close der Connection mehr machen. Eventuell (kann ich hier nicht testen) führt das zu einer weiteren Exception. Dadurch würde der Rest im Finally-Block nicht mehr ausgeführt. Warum es dann beim Debuggen trotzdem durchlaufen wird, kann ich dir so nicht sagen.

Pet04 7. Jun 2018 09:49

AW: SQL connection Fehler abfangen
 
Leider hat das mit der "ADOC_ChristDB.close;" auch nichts gebracht.

HolgerX 7. Jun 2018 10:04

AW: SQL connection Fehler abfangen
 
Hmm..

Hast Du dass mal mit einer Fehlerausgabe getest?
Nach folgendem Schema?

Delphi-Quellcode:
  ADOC_ChristDB.CLose;
  ADOC_ChristDB.ConnectionString := SQL_Server;
  try
    ADOC_ChristDB.Open;
  except
    // OLE-Exception von MS/ADO
    on e: EOLEException do begin
      // Zum Testen!!
      ShowMessage('[' + E.ClassName + '] ' + IntToHEX(E.ErrorCode,8) + ' ' + E.Source + #13#10 + E.Message);
      // Hier könnte auf den spezifischen ErrorCode von Microsoft reagiert werden!!!

      //OpenSQLServerForm := TOpenSQLServerForm.Create(Application); //
      //OpenSQLServerForm.ShowModal;
    end;
    // Andere Exception
    on e: Exception do begin
      ShowMessage(E.Message);
    end;
  end;
(Aus dem Kopf herunter getippt...)

Pet04 7. Jun 2018 13:19

AW: SQL connection Fehler abfangen
 
Problem besteht immer noch. Auf mit OLEExeption.

Jasocul 7. Jun 2018 13:33

AW: SQL connection Fehler abfangen
 
Ich habe den Verdacht, dass du an der falschen Stelle suchst.
Mache mal zwischen jedem schritt ein ShowMessage, damit du siehst, wie weit dein Programm kommt.
Meine Vermutung ist, dass der Fehler im TOpenSQLServerForm.Create(Application) entsteht. Aber das ist nur Spekulation.

HolgerX 7. Jun 2018 13:58

AW: SQL connection Fehler abfangen
 
Hmm..

Zitat:

Zitat von Pet04 (Beitrag 1404182)
Problem besteht immer noch. Auf mit OLEExeption.

Hast Du meinen Source mit dem ShowMessage verwendet (Auskommentierter Dialog)?

Wenn ja, was wird den als Fehler angezeigt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:35 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