Variable in SQL-Anweisung
-
Hallo C++ Coder,
ich habe folgendes Problem:Ich möchte in der VCL in einer SQL Anweisung anstatt einem festen Wertes eine Variable verwenden, wie kann ich das realisieren?
[cpp]ADOQuery1->SQL->Add("SELECT * FROM database WHERE ID=50");[/code]
Anstatt 50 hätte ich gerne eine Variable
Gruß und danke!
-
Speichere dir das SQL Statment in einem String wo du an der Stelle die ersetzt werden soll einen Platzhalter einbaust. Anschließend fügst du diese Variable dem Add Befehl hinzu.
-
2 Beispiele:
int wert = 50; ADOQuery1->SQL->Add("SELECT * FROM database WHERE ID=" + IntToStr(wert));
oder
ADOQuery1->SQL->Add("SELECT * FROM database WHERE ID=:ID"); ADOQuery1->Parameters->ParamByName("ID")->Value = 50;
im BCB-(Unter)Forum/FAQ gibts eine Menge Beiträge dazu
-
guenni81 schrieb:
Speichere dir das SQL Statment in einem String wo du an der Stelle die ersetzt werden soll einen Platzhalter einbaust. Anschließend fügst du diese Variable dem Add Befehl hinzu.
Das ist genau die Methode, die zu SQL-Injection führt. Zwar in diesem Fall eines nummerischen Parameters nicht problematisch, aber man sollte sich das nicht angewöhnen. SQL-Anweisungen sollte man nicht so zusammenbauen. Fast immer kann man prepared Statements mit Platzhaltern verwenden, so wie Linnea es hier richtigerweise für diese Fall gezeigt hat.
Tntnet
-
C/C++ Code:
ADOQuery1->SQL->Add("SELECT * FROM database WHERE ID=:ID");
ADOQuery1->Parameters->ParamByName("ID")->Value = 50;Ah, vielen Dank!
Genauso meinte ich das...
Mit dem String hat zwar auch geklappt und arbeitet derzeit, aber wie oben ist mir persönlicher lieberDanke und Gruß