sql-syntax mit variablen
-
Habe eine bestimmt sehr leicht zu beantwortende Frage die ich aber irgendwie nirgendwo benawortet finde:
Ich spreche eine db mit folgendem beispielbefehl an:
mysql_query(&mysql,"SELECT lid, genutzt FROM zuege WHERE id= 1")
und das funzt auch, aber:
Wie ersetze ich die 1 am Ende durch eine Variable?
hab schon alles mögliche (logische und unlogische) probiert.Und in diesem Zusammenhang:
Wie schreibe ich eine Variable in einen String, wenn ich die abfrage z.B. erst mal speichern will?
-
guelling schrieb:
mysql_query(&mysql,"SELECT lid, genutzt FROM zuege WHERE id= 1")
Du brauchst String-Streams:
#include <sstream> // ... std::ostringstream os; os << "SELECT lid, genutzt FROM zuege WHERE id = " << number; mysql_query(&mysql, os.str().c_str());
-
Oder sprintf geht auch.
Dazu mehr in der FAQ...
-
wunderbar, danke für die schnelle Hilfe
-
Hmm, jetzt hab ich doch wieder ein Problem und zwar mit diesen streams.
Wie kann ich die denn wieder "leeren", damit ich die variable wieder genauso verwenden kann?Edit:
Und wie kann ich die eigentlich ausgeben?
Sind bestimmt leichte Fragen aber wir haben echt schon spätEdit2:
deshalb verschreib ich mich auch
-
Verstehe zwar nicht was du meinst aber os.str().c_str()); gibt sie aus.
Warum willst du die leeren ?
Wenn di Funktion verlassen wird, wird sie sowieso gelöscht.
-
wenn du den gleichen stream noch mal benutzen willst kannst du das ihn mit os.str() = "" leeren
-
genau, ich will den stream mehrmals benutzen, schliesslich ist eine db-abfrage ziemlich wenig.
Und diesen Stream verwende ich nicht in funktionen sondern in der main (keine lust jeden kikifatz zu moduliesieren). leider funktioniert os.str() = "" nicht, der inhalt bleibt der selbe. was tun?
-
guelling schrieb:
was tun?
Gerard den Tippfehler verzeihen und stream.str(""); verwenden
-
os.str("")
-
*danke danke danke verzeih*
-
hmm ich hab irgendwie noch nie str("") genommen *g*. immer sowas:
{ ostringstream s; s << "bla" << 4; do_something(s.str()); } { ostringstream s; s << "bumm" << dam_dam; do_something_maybe_something_different_or_even_foo(s.str()); }
ich glaub, das is aber geschmackssache.
-
So ist es aber langsamer, weil er zwei Mal einen ostringstream anlegt und einmal zwischendurch zerstört, anstatt einmal anzulegen, einmal zu zerstören und einmal den Inhalt zu ändern.
-
@Mis2com: glaub ich nicht.
-
schlechter stil