Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi - Mysqlerror ausgeben? (https://www.delphipraxis.net/177116-delphi-mysqlerror-ausgeben.html)

LoewenZahn 17. Okt 2013 10:45

Datenbank: Mysql • Version: 5.5.31 • Zugriff über: Delphi

Delphi - Mysqlerror ausgeben?
 
Hallo,

um mir etwas Arbeit zu vereinfachen, habe ich mir ein Programm geschrieben das alle sql Befehle in einer .txt abklappert, dies ist dann nötig wenn ich z.b. eine zu große Liste mit bspw. 300 mio Zeichen habe. Das ganze funktioniert auch ganz gut, nur weiß ich nicht wie ich auf einen Sql-Error reagieren kann.

Beispielsweise möchte ich einen INSERT durchführen, aber eine Spalte existiert nicht. Mysql/phpmyadmin gibt mir dann "#1054 - Unknown column 'BETRAG3' in 'field list'" als Msg aus, doch wie kann ich die gleiche in Delphi ausgeben?

Delphi-Quellcode:
  try
     if query.active then query.Close;
     query.sql.Text := abfrage;
     query.ExecSQL;
  except
      showmessage('Fehler!');
  end;
Ich habe gedacht, dass man hier eventuell mit Try except arbeitet und mehr als nur ein Showmessage anwendet... Leider komme ich nicht drauf.

Hat jemand eine Anregung/Tipp ?

Gruß

Bernhard Geyer 17. Okt 2013 10:48

AW: Delphi - Mysqlerror ausgeben?
 
Du musst mit der Exception-Message arbeiten. Frei ohne Compiler getippt:

Delphi-Quellcode:
try
  ...
except
  on e: Exception
    ShowMessage('Fehler: ' + e.Message);
end;

LoewenZahn 17. Okt 2013 10:54

AW: Delphi - Mysqlerror ausgeben?
 
Oh nein so einfach? Und da dachte ich aufgrund meiner Suche wäre die Antwort um einiges schwerer.. Wenn man weiß wonach man suchen muss wird man jetzt schnell findig..

Vielen Dank!!

himitsu 17. Okt 2013 10:58

AW: Delphi - Mysqlerror ausgeben?
 
Es geht übrigens auch sowas
Delphi-Quellcode:
// in System.ExceptObject steckt die letzte/aktuelle Exception (also zufällig die von dem aktuellen Except-Block)
// und SysUtils.ShowException zeigt den normalen Exception-Dialog an
try
  ...
except
  ShowException(ExceptObject, ExceptAddr);
end;
Delphi-Quellcode:
// entspricht in etwa dem ShowMessage(E.Message);
try
  ...
except
  on E: Exception do
    ShowException(E, nil);
end;
Delphi-Quellcode:
// entspricht in etwa dem ShowMessage('Fehler: ' + E.Message);
try
  ...
except
  on E: Exception do begin
    E.Message := 'Fehler: ' + E.Message;
    ShowException(E, nil);
  end;
end;

Back2Code 17. Okt 2013 10:58

AW: Delphi - Mysqlerror ausgeben?
 
Darf ich noch fragen welche Komponente du nutzt um auf den MySQL Server zuzugreifen ?

LoewenZahn 17. Okt 2013 12:46

AW: Delphi - Mysqlerror ausgeben?
 
Hallo Back2Code,

ich nutze eine TmySQLDatabase mit zugehöriger Dataset und query. Die Elemente habe ich von "DAC for MySQL".

Gruß

VCLControls 17. Okt 2013 15:40

AW: Delphi - Mysqlerror ausgeben?
 
Zitat:

Zitat von LoewenZahn (Beitrag 1232290)
ich nutze eine TmySQLDatabase mit zugehöriger Dataset und query. Die Elemente habe ich von "DAC for MySQL".

Ich benutze die Komponenten von denen zwar schon lange nicht mehr, aber es müsste nach meiner Erinnerung bei der Datenbankkomponente(den Namen weiß ich nicht mehr aus dem Kopf), so was wie ein onError-Event geben, mit dem man alle auftretenden Fehler behandeln kann.
Spart man sich evt. jede Menge try-except Behandlungen und hat es an zentraler Stelle.


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