[C con Clase] Dudas con variables...

Steven Davidson srd4121 en njit.edu
Jue Mayo 29 20:42:38 CEST 2008


Stereo System wrote:
> 
> Acabo de descubrir que en la pagina hay informacion sobre MysqlAPI
> CON c++...
> SI yo quisiese formular una inserccion de informacion, desde una
> varaible de c++ a una consulta para terminar en la table...
> Como seria ? Respecto a las variables...
> 
> mysql_query(&local, "INSERT INTO fiesta (invitados) values ('  nombre
> ');");
> 
>  donde nombre es una variable...  
> 

Como ya dije en mi mensaje anterior, deberás construir esa cadena de 
caracteres. No existe ninguna funcionalidad en el lenguaje para 
manipular cadenas, por lo que necesitarás usar las bibliotecas 
estándares, como 'strcpy()', 'strcat()', o 'sprintf()'. Por cierto, 
deberías usar 'mysql_real_query()', en lugar de 'mysql_query()'. El 
ejemplo sigue la misma lógica que el ejemplo en mi mensaje anterior:

char szConsulta[4096]=""; // una cadena bien grande
char nombre[128];
...
sprintf( szConsulta, "INSERT INTO fiesta (invitados) values (' %s ')", 
nombre );

mysql_real_query( &local, szConsulta );

Date cuenta de la omisión del punto y coma en la sentencia MYSQL. Las 
funciones 'mysql_real_query()' y 'mysql_query()' no requieren tal 
carácter al final de una sentencia MYSQL. Ahora bien, si estás enviando 
múltiples sentencias MYSQL, entonces sí necestias el punto y coma o \g 
para separarlas.

> He segido tu consejo usando string pero el compilador parece q no le
> cae muy bien...

Ten presente que para poder usar 'string', necesitas usar el espacio con 
nombre 'std'. Para hacer las cosas más sencillamente, escribe la 
directiva de compilador: using namespace std;  Te doy un ejemplo 
completo pero sencillo:

#include <iostream>
#include <string>

using namespace std;

int main()
{
   string strMensaje = "Hola Mundo!";
   cout << strMensaje << endl;

   strMensaje += " Arriba C++!";
   cout << strMensaje << endl;

   cout << "Convirtiendo al estilo C: \"" << strMensaje.str() << '"'
        << endl;

   return 0;
}


Espero que esto te ayude.

Steven







Más información sobre la lista de distribución Cconclase