Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO: ein simples INSERT (https://www.delphipraxis.net/82003-ado-ein-simples-insert.html)

shmia 7. Dez 2006 13:38

Re: ADO: ein simples INSERT
 
Um es ganz deutlich zu sagen:
1.) Stringliterale werden unter SQL/92 in einfache Hochkommas (nicht doppelte Anführungszeichen) gesetzt.
2.) Man sollte keinesfalls die Hochkommas selbst hinschreiben, sondern immer die Funktion QuotedStr oder noch besser Parameter benützen
Angenommen die Variable wert1 aus dem Beispiel enthielte den Text Wayne's World; die Folge wäre bei Nichtbeachtung dieser Regel eine Syntaxfehler
3.) Niemals in einer Klasse (z.B. von TForm abgeleitet) auf die Instananzvariable zugreifen!!!
Delphi-Quellcode:
procedure TFmain.Button1Click(Sender: TObject);
begin
  // ganz böser Fehler: es wird die Variable FMain angesprochen
  Fmain.ado_query.Active:= FALSE;
  // richtig:
  ado_query.Active:= FALSE;
4.) Finger weg von "try...except", wenn man das Prinzip nicht verstanden hat!
Delphi-Quellcode:
try
   ado_query.ExecSQL;
except
   // Ganz schlecht: es wird nur eine Meldung mit dem völlig aussagelosen Text "Duplikat?" ausgegeben
   // der Fehler könnte aber völlig andere Ursachen haben
   // der Programmfaden wird fortgefüht, obwohl ein Fehler vorliegt
   Messagebox(handle,'Duplikat?','',0);
end;
Delphi-Quellcode:
try
   ado_query.ExecSQL;
except
   // Richtig: vernünftige Fehlermeldung
   on E:Exception do
   begin
      E.Message := 'Fehler bein Einfügen in Tabelle <test>'#13#10+
         '(evtl. Duplikat)'#13#10+
         E.Message; // orginale Fehlermeldung anhängen
      raise; // Exception erneut auslösen
   end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr.
Seite 2 von 2     12   

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