Entwickler-Ecke
Datenbanken - SQL: Insert into
LickstheComp - Fr 17.04.09 13:28
Titel: SQL: Insert into
Ich möchte zu einem bestimmten Datensatz andere Daten dazuspeichern. Aber es kommt immer das ein Semikolon fehlt. .
Delphi-Quelltext
1:
| ADOquery4.sql.add('Insert INTO Tabelle1 (User) VALUES ("'+combobox1.Text+'") SELECT * FROM Tabelle1 WHERE (LNR=10) ;'); |
Die Nummer von LNR ist egal, die mach ich dan noch dynamisch.
lg
zuma - Fr 17.04.09 13:40
Was auch immer du mit dem Select.. bezweckst ..
du schreibst 2 Sql-Befehle in eins - das geht nicht
Insert into .. () values (); <-- fertig bei schreiben ohne bedingung
oder (was ich eher vermute, du willst bedingt schreiben )
insert into .. () values () where xy = Select ...
LickstheComp - Fr 17.04.09 13:56
ja mit bedingung, also so:
Insert INTO Tabelle1 (User) VALUES ("'+combobox1.Text+'") WHERE (LNR=10) ?
Nersgatt - Fr 17.04.09 14:02
LickstheComp hat folgendes geschrieben : |
ja mit bedingung, also so:
Insert INTO Tabelle1 (User) VALUES ("'+combobox1.Text+'") WHERE (LNR=10) ? |
Ja, so ungefähr muss es aussehen. Wobei Du aber ein Problem bekommst, wenn in combox1.Text ein " oder ein ; vorkommt.
LickstheComp - Fr 17.04.09 14:08
Trotzdem kommt das ein Semikolon fehlt :(
Nersgatt - Fr 17.04.09 14:12
Was steht denn in Combobox1.Text?
Schau Dir das zusammengebastelte Statement mal an: ShowMessage(ADOquery4.sql.GetText) und poste ggf. hier.
Xentar - Fr 17.04.09 14:18
Äh.. was bitte soll ein INSERT mit einem WHERE?
Insert fügt einen Datensatz hinzu - wofür soll man da noch eine Bedingung angeben?
Kann es sein, dass ihr das mit UPDATE verwechselt?
Nersgatt - Fr 17.04.09 14:19
Xentar hat folgendes geschrieben : |
Äh.. was bitte soll ein INSERT mit einem WHERE?
Insert fügt einen Datensatz hinzu - wofür soll man da noch eine Bedingung angeben?
Kann es sein, dass ihr das mit UPDATE verwechselt? |
:autsch: :autsch:
Womit Du natürlich vollkommen recht hast! Naja, man merkt, dass es Freitag ist.
LickstheComp - Fr 17.04.09 14:21
also statt insert into einfach update schreiben?
firool - Fr 17.04.09 14:24
Hi,
mach zusätzlich aus dem:
VALUES ("'+combobox1.Text+'") SELECT
ein
VALUES ('''+combobox1.Text+''') SELECT
Also 3 einzelne Hochkommas.
Gruß
firool
Nersgatt - Fr 17.04.09 14:25
LickstheComp hat folgendes geschrieben : |
also statt insert into einfach update schreiben? |
Da ist die Frage, was Du willst.
Möchtest Du einen NEUEN Datensatz einfügen:
SQL-Anweisung
1:
| Insert into tabelle (feld1, feld2) VALUES (wert1, wert2) |
Möchtest Du einen BESTEHENDEN Datensatz ändern:
SQL-Anweisung
1:
| Update tabelle set feld1=wert1,feld2=wert2 where bedingung |
bis11 - Fr 17.04.09 14:25
Die Zeile muss entweder so lauten :
Delphi-Quelltext
1:
| ADOquery4.sql.add('Insert INTO Tabelle1 (User) VALUES (' + QuotedStr(combobox1.text) + ') ;'); |
oder so :
Delphi-Quelltext
1:
| ADOquery4.sql.add('UPDATE Tabelle1 SET User =' + QuotedStr(combobox1.text) + ') WHERE LNR=10;'); |
LickstheComp - Fr 17.04.09 14:30
Danke die Zeile von bis11 funktioniert!
was bedeutet QuotedStr ?
lg
p.s. kann man statt ' + QuotedStr(combobox1.text) + ' nicht was anderes schreiben?
Nersgatt - Fr 17.04.09 14:31
LickstheComp hat folgendes geschrieben : |
was bedeutet QuotedStr ?
lg |
Einfach mal den Cursor draufstellen und F1 drücken.
LickstheComp - Fr 17.04.09 14:33
ok danke habs!!
Delete - Fr 17.04.09 15:10
Ich würde aber SQL-Parameter verwenden, dann bist Du auch vor SQL-Injection geschützt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!