Mysql y C API

gabosan

Lanero Regular
10 Abr 2005
22
Hola, muchach@s estoy inicializandome en la programacion en linux, y me encontre un programa que hace un enlace con una base de datos en Mysql, el programa lo estoy haciendo en C, aqui les muestro :

#include <mysql.h> /* Headers for MySQL usage */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

static MYSQL demo_db;

int main(int argc, char **argv){
int insert_id;
char *encdata, *query;
int datasize;
MYSQL_RES *res; /* To be used to fetch information into */
MYSQL_ROW row;

if(argc<2){
printf("Please supply a string for insertion into the database\n");
exit(0);
}

if(!mysql_connect(&demo_db, "localhost", "root", "")){ /* Make connection with mysql_connect(MYSQL db, char *host, char *username, char *password */
printf(mysql_error(&demo_db));
exit(1);
}

if(mysql_select_db(&demo_db, "demodb")){ /* Select the database we want to use */
printf(mysql_error(&demo_db));
exit(1);
}

encdata=malloc(strlen(argv[1])+1); /* Create a buffer to write our slash-encoded data int; it must be at least twice the size of the input string plus one byte for the null terminator */
datasize=mysql_real_escape_string(&demo_db, encdata, argv[1], strlen(argv[1])); /* Escape any MySQL-unsafe characters */
query=malloc(datasize+255); /*Make sure we have enough space for the query */
sprintf(query, "INSERT INTO demotable(demodata) VALUES('%s')", encdata); /* Build query */
if(mysql_real_query(&demo_db, query, strlen(query)+255)){ /* Make query */
printf(mysql_error(&demo_db));
exit(1);
}
free(query);

insert_id=mysql_insert_id(&demo_db); /* Find what id that data was given */

query=malloc(255);
sprintf(query, "SELECT demodata FROM demotable WHERE id='%d'", insert_id);
if(mysql_real_query(&demo_db, query, 255)){ /* Make query */
printf(mysql_error(&demo_db));
exit(1);
}

res=mysql_store_result(&demo_db); /* Download result from server */
row=mysql_fetch_row(res); /* Get a row from the results */
printf("You inserted \"%s\".\n", row[0]);
mysql_free_result(res); /* Release memory used to store results. */
mysql_close(&demo_db);

return 0;
}

al compilarlo lo hago de la siguiente

CFG=/usr/local/mysql/bin/mysql_config
gcc -o pro `$CFG --cflags` mysqldemo.c `$CFG --libs`

el error que me muestra es el siguiente

bash: /usr/local/mysql/bin/mysql_config: No such file or directory
bash: /usr/local/mysql/bin/mysql_config: No such file or directory

/root/tmp/cc0ZMZqV.o(.text+0x45): In function `main':
: undefined reference to `mysql_connect'

/root/tmp/cc0ZMZqV.o(.text+0x59): In function `main':
: undefined reference to `mysql_error'

/root/tmp/cc0ZMZqV.o(.text+0x81): In function `main':
: undefined reference to `mysql_select_db'
/root/tmp/cc0ZMZqV.o(.text+0x95): In function `main':
: undefined reference to `mysql_error'
/root/tmp/cc0ZMZqV.o(.text+0xf4): In function `main':
: undefined reference to `mysql_real_escape_string'
/root/tmp/cc0ZMZqV.o(.text+0x14b): In function `main':
: undefined reference to `mysql_real_query'
/root/tmp/cc0ZMZqV.o(.text+0x15f): In function `main':
: undefined reference to `mysql_error'
/root/tmp/cc0ZMZqV.o(.text+0x190): In function `main':
: undefined reference to `mysql_insert_id'
/root/tmp/cc0ZMZqV.o(.text+0x1d4): In function `main':
: undefined reference to `mysql_real_query'
/root/tmp/cc0ZMZqV.o(.text+0x1e8): In function `main':
: undefined reference to `mysql_error'
/root/tmp/cc0ZMZqV.o(.text+0x20b): In function `main':
: undefined reference to `mysql_store_result'
/root/tmp/cc0ZMZqV.o(.text+0x21c): In function `main':
: undefined reference to `mysql_fetch_row'
/root/tmp/cc0ZMZqV.o(.text+0x242): In function `main':
: undefined reference to `mysql_free_result'
/root/tmp/cc0ZMZqV.o(.text+0x252): In function `main':
: undefined reference to `mysql_close'
collect2: ld returned 1 exit status
 
Hola, gracias por responder.
bueno ya no me salen tantos errores solo me sale este error despues de compilarlo

gcc -o pro `$CFG --cflags` mysqldemo.c `$CFG --libs`
/home/gabo/tmp/ccK0Wj1P.o(.text+0x45): In function `main':
: undefined reference to `mysql_connect'
collect2: ld returned 1 exit status
 
Bueno el error anterior ya arregle, el problema era que usaba el comando "mysql_connect(MYSQL db, char *host, char *username, char *password)" y ese no es el adecuado el adecuado es "mysql_real_connect(&demo_db,"localhost","root","passwd")", el problema que me sa ahora es el siguiente :

gcc -o pro `$CFG --cflags` mysqldemo.c `$CFG --libs`
mysqldemo.c: In function `main':
mysqldemo.c:22: error: too few arguments to function `mysql_real_connect'"
y no se en realidad que pueda ser :(
 

Los últimos temas