Mal was Grundlegendes zu SQL und Hochkommas:
* Nur Stringliterale werden in Hochkommas eingeschlossen.
Andere Datentypen wie Numeric, Float, ... werden
nicht in Hochkommas eingeschlossen:
SQL-Code:
-- nur das Feld Beschreibung ist ein Stringfeld (Datentyp varchar(50))
INSERT INTO Tabelle(Betrag, Beschreibung) VALUES(16.5, 'Zinssatz Konto 14')
* wer die Hochkommas hartcodiert im Sourcecode ablegt, dem gehört gleich der Dübel gebohrt.
Delphi-Quellcode:
// FALSCH
Query1.SQL.Text:='INSERT INTO tabelle (Feld1, Feld2) VALUES('''+Combobox1.Text+''','''+Edit1.Text+'')';
// Richtig
Query1.SQL.Text:='INSERT INTO tabelle (Feld1, Feld2) VALUES('+QuotedStr(Combobox1.Text)+','+QuotedStr(Edit1.Text)+')';
mit
QuotedStr ist es leichter zu lesen
und es gibt vorallem keinen Syntaxfehler, wenn in den Daten selbst mal ein Hochkomma enthalten ist.
* um den Problemen mit Hochkommas und diversen Datumsschreibweisen von vornerein aus dem Weg zu gehen, nimmt man Parameter:
Delphi-Quellcode:
Query1.SQL.Text:='INSERT INTO tabelle (Feld1, Feld2) VALUES
(:Feld1, :Feld2)';
Query1.Parameters.ParamValues['Feld1'] := Combobox1.Text;