[C con Clase] Intento de conectarse a mysql y actualizar cosas

Salvador Pozo salvador en conclase.net
Mie Ene 4 14:52:44 CET 2012


El pasado 2012-01-04 10:01:07, Marcos escribió:
 
M> Hola, lo que estoy intentando es conectarme a la db por medio de un programa
M> y que modifique unas cositas, el caso esque cuando voy a compilarlo (desde
M> el simbolo de sistema de visual 10 o el compilador de wxDev c++ me da error
M> y pone: prueba.obj : error LNK2019 simbolo externo _mysql_init en 4 sin
M> resolver al que se hace referencia en la funcion _main, y esque no encuentro
M> el error. Os dejo el programa: (mejor os lo pongo en aparte que es muy
M> largo): http://paste2.org/p/1851840

Hola:

Se trata de un error de enlazado, no tiene mucho que ver con el código del programa en si.

Tienes que indicar al enlazador que incluya la librería de mysql. En el caso del compilador de microsoft se llamará, probablemente, mysql.lib, o libmysql.lib.

Desconozco exactamente cómo se hace eso desde la línea de comandos de tu enlazador, yo siempre uso proyectos en los que se puede indicar en las opciones qué librerías usar.

Otra cosa. Veo que usas sentencias de este tipo:
----8<------
acc= row[0];
mysql_query(myData, "UPDATE account SET id= accid where id=acc");
----8<-----

Aquí hay un error, ya que en la consulta usas "accid" y "acc" como un literales, en lugar de usar el número accid o la cadena apuntada por el puntero acc.
Deberías usar funciones sprintf para construir el texto de la consulta:
----8<------
acc= row[0];
char consulta[256];
sprintf(consulta, "UPDATE account SET id=\"%d\" where id=\"%s\"", accid, acc);
mysql_query(myData, consulta);
----8<-----

También te recomiendo que entrecomilles los literales de la consulta. Con los números es opcional, pero al menos yo tengo costumbre de entrecomillar todo, eso evita problemas y errores inesperados. Si te resulta más cómodo, usa comillas simples:
----8<------
sprintf(consulta, "UPDATE account SET id='%d' where id='%s'", accid, acc);
----8<-----

Suerte.

P.D.: Veo que también juegas al WOW :)

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


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