Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Conectar c a mysql

Estas en el tema de Conectar c a mysql en el foro de C/C++ en Foros del Web. Hola, tengo que conectar c a mysql (mysql-front) me recomiendan alguna libreria? o tutorial? Gracias!!...
  #1 (permalink)  
Antiguo 13/07/2006, 08:04
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 19 años, 5 meses
Puntos: 1
Conectar c a mysql

Hola, tengo que conectar c a mysql (mysql-front) me recomiendan alguna libreria? o tutorial?

Gracias!!

  #2 (permalink)  
Antiguo 14/07/2006, 11:44
arm
 
Fecha de Ingreso: mayo-2006
Mensajes: 112
Antigüedad: 18 años, 6 meses
Puntos: 0
yo te recomiendo mucho
http://c.conclase.net/
__________________
-> La duda adecuada es un buen comienzo <-
  #3 (permalink)  
Antiguo 14/07/2006, 13:38
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 19 años, 5 meses
Puntos: 1
Estuve viendo esa pagina y es muy util, hice el siguiente codigo:

#include <stdio.h>
#include <mysql/mysql.h>
int main (int argc, char *argv[]) {

dbase=mysql_init(NULL);
dbase->reconnect=1;
char *server="192.168.0.240";
char *user="root";
char *password="";
char *database="sermax";

/*printf("Como va?\n");*/
// Esta es la variable para las conexiones
MYSQL *mysql;
int result = 0;
printf("Como va?\n");
// esta funcion debe ejecutarse antes de la conexion

/*mysql_init(*mysql);*/

MYSQL *mysql_init(MYSQL *mysql);

printf("Vamos a ver si nos conectamos a %s",argv[1]);

// usamos mysql_real_connect (mysql_connect esta en desuso)
// Esta es la definicion de la funcion:
//MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db,
//unsigned int port, const char *unix_socket, unsigned long client_flag)
// Los flags de cliente pueden verse en la documentacion, para este ejemplo basta con 0

/*if (!mysql_real_connect(mysql, "localhost", "root", "", "sermax", 3306, "/var/lib/mysql/mysql.sock", 0) ) {*/

if (!mysql_real_connect(dbase, server, user, password, database, 0, NULL, 0) ) {
/* printf("Mal rollete: %s",mysql_error(&mysql));*/
printf("\n\n Recuerda el uso es: %s host db user password\n\n",argv[0]);
return(-1);
} else {
printf("OK conexion establecida!!");
}


printf("Como fue?\n");

}

Compilo de la siguiente manera:

gcc -g -o Conectar -I'/usr/include/mysql' -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm Conectar.c

Y me tira el siguiente error:

Conectar.c: In function `main':
Conectar.c:18: error: `dbase' undeclared (first use in this function)
Conectar.c:18: error: (Each undeclared identifier is reported only once
Conectar.c:18: error: for each function it appears in.)

Si pruebo ejecutarlo me dice
SEGMENTATION FAULT
Me orientas un poco? la linea 18 es :dbase=mysql_init(NULL);
Gracias!
  #4 (permalink)  
Antiguo 14/07/2006, 14:55
lpz
 
Fecha de Ingreso: abril-2006
Ubicación: Argentina
Mensajes: 402
Antigüedad: 18 años, 7 meses
Puntos: 2
No declaraste la variable dbase...Por eso tira ese error.
  #5 (permalink)  
Antiguo 17/07/2006, 08:46
 
Fecha de Ingreso: agosto-2005
Mensajes: 34
Antigüedad: 19 años, 3 meses
Puntos: 0
Debes declarar dbase de esta manera:

MYSQL* dbase;
dbase = mysql_init(NULL);

Otro ejemplo:
www . latindevelopers.com/ivancp/2006/02/mysql-desde-cpp/
__________________
Recursos Visual C++
  #6 (permalink)  
Antiguo 17/07/2006, 09:28
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 19 años, 5 meses
Puntos: 1
Hola!

agregue lo que me pasaste, me quedo asi:

#include <stdio.h>
#include <mysql/mysql.h>
int main (int argc, char *argv[]) {

MYSQL *dbase;
MYSQL *mysql;
int result = 0;

mysql_init(mysql);
dbase=mysql_init(NULL);
dbase->reconnect=1;
char *server="192.168.0.240";
char *user="root";
char *password="";
char *database="sermax";

printf("Como va?\n");

printf("Vamos a ver si nos conectamos a %s",argv[1]);

if (!mysql_real_connect(dbase, server, user, password, database, 0, NULL, 0) ) {
printf("\n\n Recuerda el uso es: %s host db user password\n\n",argv[0]);
return(-1);
} else {
printf("OK conexion establecida!!");
}


printf("Como fue?\n");

}

Compilo asi:

gcc -o Conectar-I'/usr/include/mysql' -L'/usr/lib/mysql' \
-lmysqlclient -lz -lcrypt -lnsl -lm Conectar.c

Y me tira el siguiente error:

/tmp/ccmEkw29.o(.text+0x2a): In function `main':
: undefined reference to `mysql_init'
/tmp/ccmEkw29.o(.text+0x37): In function `main':
: undefined reference to `mysql_init'
/tmp/ccmEkw29.o(.text+0xa5): In function `main':
: undefined reference to `mysql_real_connect'
collect2: ld returned 1 exit status

Lei el ejemplo que me pasaste pero es para C++, yo estoy usando C.

Gracias por tu colaboracion, espero mas ayuda! Graciass!!
  #7 (permalink)  
Antiguo 17/07/2006, 09:45
 
Fecha de Ingreso: agosto-2005
Mensajes: 34
Antigüedad: 19 años, 3 meses
Puntos: 0
Cambiale
#include <mysql/mysql.h>

por

#include <mysql.h>
__________________
Recursos Visual C++
  #8 (permalink)  
Antiguo 17/07/2006, 09:55
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 19 años, 5 meses
Puntos: 1
Me sigue tirando lo mismo,

/tmp/ccgMVt3U.o(.text+0x2a): In function `main':
: undefined reference to `mysql_init'
/tmp/ccgMVt3U.o(.text+0x37): In function `main':
: undefined reference to `mysql_init'
/tmp/ccgMVt3U.o(.text+0xa5): In function `main':
: undefined reference to `mysql_real_connect'
collect2: ld returned 1 exit status

Puedo tener un error de compilacion?

Yo uso:

gcc -o mysql_basico -I'/usr/include/mysql' -L'/usr/lib/mysql' \ -lmysqlclient -lz -lcrypt -lnsl -lm mysql_basico.c

Si le comento la linea que dice
mysql_init(mysql);

me tira un error de mysql_init menos.

Gracias! sigo por aca
  #9 (permalink)  
Antiguo 17/07/2006, 10:45
 
Fecha de Ingreso: agosto-2005
Mensajes: 34
Antigüedad: 19 años, 3 meses
Puntos: 0
verifica si tienes los archivos /usr/lib/mysql/libmysqlclient.*, por que me parece que al momento de enlazar no los encuentra
__________________
Recursos Visual C++
  #10 (permalink)  
Antiguo 17/07/2006, 12:02
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 19 años, 5 meses
Puntos: 1
ivancp!

Te cuento, entre en el directorio usr, luego en el lib
pero pongo cd /mysql y ese directorio no existe, pido un dir y tengo esto:

cpp libdl-2.3.4.so libnss_nisplus-2.3.4.so
evms libdl.so.2 libnss_nisplus.so.2
firmware libe2p.so.2 libnss_nis.so.1
i686 libe2p.so.2.3 libnss_nis.so.2
iptables libext2fs.so.2 libnss_winbind.so
kbd libext2fs.so.2.4 libnss_winbind.so.2
ld-2.3.4.so libgcc_s-3.4.5-20051201.so.1 libnss_wins.so
ld-linux.so.2 libgcc_s.so.1 libnss_wins.so.2
libacl.so.1 libiw.so.27 libpamc.so.0
libacl.so.1.1.0 libkeyutils-1.0.2.so libpamc.so.0.77
libanl-2.3.4.so libkeyutils.so.1 libpam_misc.so.0
libanl.so.1 libm-2.3.4.so libpam_misc.so.0.77
libasound.so.2 libm.so.6 libpam.so.0
libasound.so.2.0.0 libNoVersion-2.3.4.so libpam.so.0.77
libattr.so.1 libNoVersion.so.1 libpcre.so.0
libattr.so.1.1.0 libnsl-2.3.4.so libpcre.so.0.0.1
libaudit.so.0 libnsl.so.1 libproc-3.2.3.so
libaudit.so.0.0.0 libnss1_compat-2.3.4.so libpthread-0.10.so
libblkid.so.1 libnss1_compat.so.1 libpthread.so.0
libblkid.so.1.0 libnss1_dns-2.3.4.so libresolv-2.3.4.so
libBrokenLocale-2.3.4.so libnss1_dns.so.1 libresolv.so.2
libBrokenLocale.so.1 libnss1_files-2.3.4.so librt-2.3.4.so
libc-2.3.4.so libnss1_files.so.1 librt.so.1
libcap.so.1 libnss1_nis-2.3.4.so libSegFault.so
libcap.so.1.10 libnss1_nis.so.1 libselinux.so.1
libcidn-2.3.4.so libnss_compat-2.3.4.so libsepol.so.1
libcidn.so.1 libnss_compat.so.1 libssl.so.0.9.7a
libcom_err.so.2 libnss_compat.so.2 libssl.so.4
libcom_err.so.2.1 libnss_db.so.2 libss.so.2
libcrypt-2.3.4.so libnss_db.so.2.0.0 libss.so.2.0
libcrypto.so.0.9.7a libnss_dns-2.3.4.so libtermcap.so.2
libcrypto.so.4 libnss_dns.so.1 libtermcap.so.2.0.8
libcrypt.so.1 libnss_dns.so.2 libthread_db-1.0.so
libc.so.6 libnss_files-2.3.4.so libthread_db.so.1
libdb-4.2.so libnss_files.so.1 libutil-2.3.4.so
libdevmapper.a libnss_files.so.2 libutil.so.1
libdevmapper.a.1.02 libnss_hesiod-2.3.4.so libuuid.so.1
libdevmapper.so libnss_hesiod.so.2 libuuid.so.1.2
libdevmapper.so.1.00 libnss_ldap-2.3.4.so modules
libdevmapper.so.1.01 libnss_ldap.so.2 security
libdevmapper.so.1.02 libnss_nis-2.3.4.so tls

Me esta faltando el directorio mysql? como hago?

Gracias! saludos,
  #11 (permalink)  
Antiguo 17/07/2006, 12:57
 
Fecha de Ingreso: agosto-2005
Mensajes: 34
Antigüedad: 19 años, 3 meses
Puntos: 0
eso quiere decir que NO tienes instalado el paquete MySQL-devel en tu distribucion. Te sugiero que descargues un rpm desde dev.mysql.com comptible con tu distribucion de linux, luego compilarás sin problemas.
__________________
Recursos Visual C++
  #12 (permalink)  
Antiguo 17/07/2006, 13:02
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 19 años, 5 meses
Puntos: 1
probe poniendo cd /usr/lib/mysql y luego haciendo un dir y me sale

[root@desalinux ~]# cd /usr/lib/mysql
[root@desalinux mysql]# dir
libdbug.a libmysqlclient.a libmysqlclient.so libnisam.a
libheap.a libmysqlclient_r.a libmysqlclient.so.14 libvio.a

probando de a un cd no entraba...pero al poner todo el directorio junto si entro...
La verdad ya no se que puede ser...se te ocurre otra cosa?
  #13 (permalink)  
Antiguo 17/07/2006, 13:37
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 19 años, 5 meses
Puntos: 1
Pude compilar!!! pero...Je

Holaaaa!! finalmente pude compilar...ahora yo ejecuto pero no me puedo conectar...debo tener algo mal en el codigo...

Puedo estar ejecutando mal el real_connect?

MYSQL *dbase;
MYSQL *mysql;
int result = 0;

dbase=mysql_init(mysql);
dbase->reconnect=1;
char *server="192.168.0.240";
char *user="root";
char *password="pp";
char *database="sermax";
....
if (!mysql_real_connect(dbase, server, user, password, database, 3306, NULL, 0) ) {

Espero no molestarte mas!! un beso!
  #14 (permalink)  
Antiguo 21/03/2008, 09:22
 
Fecha de Ingreso: junio-2007
Mensajes: 27
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Conectar c a mysql

Como Solucionaste Este Problema? Ha Pasado Mucho, Pero No Encuentro Solucion A Esto, Puedes Postear Como Solucionaste Este Inconveniente?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:22.