AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL connection Fehler abfangen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL connection Fehler abfangen

Ein Thema von Pet04 · begonnen am 7. Jun 2018 · letzter Beitrag vom 14. Jun 2018
Antwort Antwort
Seite 1 von 2  1 2      
Pet04

Registriert seit: 26. Sep 2007
86 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

SQL connection Fehler abfangen

  Alt 7. Jun 2018, 08:31
Datenbank: MSSQL • Version: 2008R2 • Zugriff über: Ado
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

Geändert von Pet04 ( 7. Jun 2018 um 08:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von timog
timog

Registriert seit: 26. Sep 2006
Ort: Landkreis Oldenburg (Oldb)
117 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: SQL connection Fehler abfangen

  Alt 7. Jun 2018, 08:38
Was passiert, wenn Du das try eine Zeile nach oben schiebst? Wäre ein except auf bestimmte Fehler hier nicht besser?
Timo
Real Programmers are surprised when the odometers in their cars don't turn from 99999 to 9999A.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: SQL connection Fehler abfangen

  Alt 7. Jun 2018, 08:44
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 if ADOC_ChristDB.Connected = false then sondern if not ADOC_ChristDB.Connected then Das wurde im Forum schon so oft besprochen, dass ich es hier nicht nochmal erkläre.
Peter
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
86 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: SQL connection Fehler abfangen

  Alt 7. Jun 2018, 09:03
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.

Geändert von Pet04 ( 7. Jun 2018 um 09:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: SQL connection Fehler abfangen

  Alt 7. Jun 2018, 09:20
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.
Peter
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
86 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: SQL connection Fehler abfangen

  Alt 7. Jun 2018, 10:49
Leider hat das mit der "ADOC_ChristDB.close;" auch nichts gebracht.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#7

AW: SQL connection Fehler abfangen

  Alt 7. Jun 2018, 11:04
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...)
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
86 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: SQL connection Fehler abfangen

  Alt 7. Jun 2018, 14:19
Problem besteht immer noch. Auf mit OLEExeption.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: SQL connection Fehler abfangen

  Alt 7. Jun 2018, 14:33
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.
Peter
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#10

AW: SQL connection Fehler abfangen

  Alt 7. Jun 2018, 14:58
Hmm..

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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 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