Benutzer mit den meisten Antworten
Suchkriterien unter Sql durch Variable ersetzen

Frage
-
Folgendes klappt bei mir unter C++ Express:
"SELECT * FROM datenbank WHERE ID = 445";
Wenn ich aber 445 durch eine Variable ersetzen möchte, kommt eine Fehlermeldung.
int s = 445;
"SELECT * FROM datenbank WHERE ID = s";
Wie ist das zu lösen?
Gruß gottfried1940
Antworten
-
Zusammengesetzte Abfragen sollte man Grundsätzlich vermeiden, da sie oft zu SQL-Injections führen können!
http://de.wikipedia.org/wiki/SQL-Injection
Deswegen immer SQL-Abfragen mit Parametern zusammenbauen und die Parameter separat übergeben. Also
"SELECT * FROM datenbank WHERE ID = ?"
Das "?" stellt dabei ein Platzhalter dar, der dann zusammen mit der Abfrage mitgegeben wird. Wie Du den Parameter übergibst... wie Du den übergibst, hängt von Deiner Schnittstelle ab...
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Martin Richter Montag, 14. Dezember 2009 11:54
- Als Antwort markiert Robert Breitenhofer Donnerstag, 17. Dezember 2009 19:23
-
Ja, das ist klar... deswegen hab ich auch geschrieben:
Das "?" stellt dabei ein Platzhalter dar, der dann zusammen mit der Abfrage mitgegeben wird. Wie Du den Parameter übergibst, hängt von Deiner Schnittstelle ab...
Und da Du uns nicht verraten hast, WIE Du die Abfrage machst (also mit welcher Schnittstelle), können wir Dir da auch kaum helfen... es sei denn, Du zeugst uns mal den Source-Code...
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Martin Richter Montag, 14. Dezember 2009 11:53
- Als Antwort markiert Robert Breitenhofer Donnerstag, 17. Dezember 2009 19:23
Alle Antworten
-
Zusammengesetzte Abfragen sollte man Grundsätzlich vermeiden, da sie oft zu SQL-Injections führen können!
http://de.wikipedia.org/wiki/SQL-Injection
Deswegen immer SQL-Abfragen mit Parametern zusammenbauen und die Parameter separat übergeben. Also
"SELECT * FROM datenbank WHERE ID = ?"
Das "?" stellt dabei ein Platzhalter dar, der dann zusammen mit der Abfrage mitgegeben wird. Wie Du den Parameter übergibst... wie Du den übergibst, hängt von Deiner Schnittstelle ab...
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Martin Richter Montag, 14. Dezember 2009 11:54
- Als Antwort markiert Robert Breitenhofer Donnerstag, 17. Dezember 2009 19:23
-
Ja, das ist klar... deswegen hab ich auch geschrieben:
Das "?" stellt dabei ein Platzhalter dar, der dann zusammen mit der Abfrage mitgegeben wird. Wie Du den Parameter übergibst, hängt von Deiner Schnittstelle ab...
Und da Du uns nicht verraten hast, WIE Du die Abfrage machst (also mit welcher Schnittstelle), können wir Dir da auch kaum helfen... es sei denn, Du zeugst uns mal den Source-Code...
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Martin Richter Montag, 14. Dezember 2009 11:53
- Als Antwort markiert Robert Breitenhofer Donnerstag, 17. Dezember 2009 19:23