![]() |
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:
Danke für eure Hilfe
// 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; Grüße Pet |
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?
|
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:
sondern
if ADOC_ChristDB.Connected = false then
Delphi-Quellcode:
Das wurde im Forum schon so oft besprochen, dass ich es hier nicht nochmal erkläre.
if not ADOC_ChristDB.Connected then
|
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. |
AW: SQL connection Fehler abfangen
Zitat:
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. |
AW: SQL connection Fehler abfangen
Leider hat das mit der "ADOC_ChristDB.close;" auch nichts gebracht.
|
AW: SQL connection Fehler abfangen
Hmm..
Hast Du dass mal mit einer Fehlerausgabe getest? Nach folgendem Schema?
Delphi-Quellcode:
(Aus dem Kopf herunter getippt...)
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; |
AW: SQL connection Fehler abfangen
Problem besteht immer noch. Auf mit OLEExeption.
|
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. |
AW: SQL connection Fehler abfangen
Hmm..
Zitat:
Wenn ja, was wird den als Fehler angezeigt? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz