none
Suchkriterien unter Sql durch Variable ersetzen RRS feed

  • 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
    Donnerstag, 10. Dezember 2009 16:09

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++)
    Freitag, 11. Dezember 2009 07:56
  • 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++)
    Samstag, 12. Dezember 2009 09:18

Alle Antworten

  • hallo,
    vieleicht mit:
    "SELECT * FROM datenbank WHERE ID = " + s;
    Donnerstag, 10. Dezember 2009 16:26
  • 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++)
    Freitag, 11. Dezember 2009 07:56
  • hallo,

    es kommt leider die gleiche Fehlermeldung: "Für mindestens einen Parameter wurde kein Wert angegeben."

    Trotzdem Dank.

    gottfried1940
    Samstag, 12. Dezember 2009 08:25
  • 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++)
    Samstag, 12. Dezember 2009 09:18