MySQL unterstützt zwar auch die Möglichkeit, den INSERT-Befehl ohne Angabe der Zielfelder auszuführen, ich empfehle aber der Ordnung halber trotzdem folgende Syntax:
Quelltext
1:
| INSERT INTO mydb (feld1, feld2) VALUES (value1, value2) |
Soviel dazu. Nun zur Delphi-Problematik, ganz einfach n Codeschnipsel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| myquery.SQL.Text := ' INSERT INTO mydb ( ' + ' feld1, feld2, feldn ' + ' ) VALUES ( ' + QuotedStr( edit1.Text ) + ', ' + QuotedStr( edit2.Text ) + ', ' + QuotedStr( editn.Text ) + ')'; myquery.ExecSQL; |
Wenn du Strings übergeben möchtest, ist das "QuotedStr" unabdinglich. Alternativ kannst du auch das doppelte Gänsefüsschen: " SHIFT-2 verwenden im String direkt verweden. Bei Zahlen respektive Integer ist das Gänsefüsschen unwichtig.
Bsp:
Delphi-Quelltext
1:
| '"' + edit1.Text + '"'; |
Beachte unbedingt die Unterschiede in der deutschen und angelsächsischen Schreibweise.
In Britannien z.B. steht ein PUNKT für das KOMMA als Trennung der Dezimalwerte. In Delphi gibt es dafür die Eigenschaft: "DECIMALSEPERATOR := '.'".
Ebenso bei den DATEN. Übergibst du '30.05.2004' an mysql, und mysql ist auf BRITISCH geconfed, ergibt das schonmal ein so futuristisches DATUM wie "30. Mai 2059" - hier einfach vorher mit einem FORMATDATETIME arbeiten
ki