C++:: Cómo concatenar variables usando sqlite3 insertquery

Aquí estoy tratando de concatenar variables (int y char) mediante insertQuery, pero recibo un error. Mi error es error: operandos no válidos de tipos 'const char*' y 'const char [2]' a binario 'operador+' Chicos, por favor guíenme donde estoy equivocado..

     **string insertQuery= "insert into items   (user_id,session_id,user_sessionname,buffer)values("
                        + user + "," + session + ",'" + usrname +   "','" + buff + "')";

         sqlite3_stmt *insertStmt;
                   cout << "Creating Insert Statement" << endl;
                   sqlite3_prepare(db, insertQuery.c_str(), insertQuery.size(), &insertStmt, NULL);
                   cout << "Stepping Insert Statement" << endl;
                   if (sqlite3_step(insertStmt) != SQLITE_DONE) cout << "Didn't Insert Item!" << endl;**

preguntado el 04 de julio de 12 a las 08:07

¿Cuáles son los tipos de las siguientes variables: usuario, sesión, nombre de usuario y buff? Y también, ¿por qué hay dos asteriscos antes de la cadena? -

1 Respuestas

(Suponiendo nulo terminado char* o nulo terminado char[])

Recomendar el uso de un std::ostringstream (#include <sstream>) para construir la consulta SQL:

std::ostringstream s;
s << "insert into items "
  << user
  << ','
  << session;

const std::string insertQuery(s.str());

También sería posible mediante la creación de std::string objetos en la secuencia de concatenación:

const std::string insertQuery= 
    std::string("insert into items ... values(")
  + std::string(user)
  + std::string(","); // etc

Si un char* or char[] no tiene terminación nula, puede informar al std::string constructor cuánto tiempo es:

std::string s(buf, 2);

Respondido 04 Jul 12, 09:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.