Strings/Chars verbinden in Funktionsaufruf



  • Hallo zusammen,

    ich möchte für einen Funktionsaufruf Zeichenketten verbinden (um genau zu sagen für eine mysql++ Funktion):

    mysqlpp::Query insertquery = conn.query("UPDATE records SET status=1 WHERE rid=" + res[i]["rid"]  +  ";");
    

    Das gibt aber einen fiesen Fehler

    error: invalid operands of types `const char*' and `const
    char[2]' to binary `operator+'

    Das liegt bestimmt daran dass das chars[] und keine Strings sind. Aber wie kann ich das denn am besten machen, ohne hier tausende Strings definieren zu müssen?

    Viele Grüße
    Kai



  • die Query-Klasse besitzt ein stream-operator. den kannst du dazu benutzen. das sieht dann so aus:

    mysqlpp::Query insertquery = conn.query();
    insertquery << "UPDATE `records` SET `status` = '1' WHERE `rid` = '"
                << res[i]["rid"]
                << "';";
    

    blan



  • mega!

    Ich danke dir!

    Viele Grüße
    Kai



  • Noch eine Zusatzfrage:

    Ich habe in meinem Programm als allererstes ein Query, welches ein select macht.

    mysqlpp::Query query = conn.query("SELECT.....");
    

    Und danach kommt oben genanntes INSERT-Query und danach kommt wieder ein SELECT-Query.

    Muss ich jetzt für jedes Query ein neues Query-Objekt anlegen (mit neuem Namen), obwohl ich die alten nicht mehr brauche?

    Ist es möglich das erste "nochmal zu nutzen?"

    Wenn ich es mit dem gleichen Namen nochmal erstelle kommt natürlich der Redeclaration-Error.
    Ist es nicht möglich, das alte Objekt zu "zerstören"?

    Generell mit Speicherverwaltung. Leert der sich nach Programmaufruf komplett oder muss ich da noch irgendwelche Objekte und Speicherbereiche leeren?

    Viele Grüße
    Kai



  • jo irgendwie ist das komisch. man kann das alte query nicht mehrmals benutzen - warum auch immer.

    blan


Log in to reply