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

Marcos Collado marquitos.mcm en gmail.com
Mie Ene 4 15:19:32 CET 2012


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

Como lo incluyo? Lo pongo en el codigo? : #include libmysql.lib? 

>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<-----

Ya ya me parecia que eso no iba a funcionar, lo hice deprisa y corriendo :),
ok gracias lo hare por sprintf.

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

No juego al wow, estoy "trabajando" en un servidor privador de este juego,
aunque si, alguna vez me ha dado por jugar un rato :P
-----Mensaje original-----
De: cconclase-bounces en listas.conclase.net
[mailto:cconclase-bounces en listas.conclase.net] En nombre de Salvador Pozo
Enviado el: miércoles, 04 de enero de 2012 14:53
Para: cconclase en listas.conclase.net
Asunto: Re: [C con Clase] Intento de conectarse a mysql y actualizar cosas

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
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
 

__________ Información de ESET Smart Security, versión de la base de firmas
de virus 6766 (20120104) __________

ESET Smart Security ha comprobado este mensaje.

http://www.eset.com
 
 

__________ Información de ESET Smart Security, versión de la base de firmas
de virus 6767 (20120104) __________

ESET Smart Security ha comprobado este mensaje.

http://www.eset.com
 





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