Es importante recordar que debemos tener instalados buil-tools, gcc y la librería mysqlclient la cual contiene el código API de C que distribuye Mysql, antes que nada un recordatorio de todos los requerimientos necesarios:
- mysql: MySQL client programs and shared library
- mysqlclient: Backlevel MySQL shared libraries (old libs)
- mysql-devel: Files for development of MySQL applications (a must have)
- mysql-server: Mysql server itself
- gcc, make and other development libs: GNU C compile
Programa sencillo para conectarse a Mysql: el link para descargar el código es este: fuente
Este programa debería funcionar en las mayoría de sistemas Linux y Unix. Ahora sí a lo que vinimos la carnita:
/* Simple C program that connects to MySQL Database server*/
#include <mysql.h>
#include <stdio.h>
main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server = "localhost";
char *user = "root";
char *password = "PASSWORD"; /* set me first */
char *database = "mysql";
conn = mysql_init(NULL);
/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
/* send SQL query */
if (mysql_query(conn, "show tables")) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_use_result(conn);
/* output table name */
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s \n", row[0]);
/* close connection */
mysql_free_result(res);
mysql_close(conn);
}
¿Cómo compilar y vincular el programa con las bibliotecas de MySQL?
MySQL viene con un script especial llamado mysql_config. El cual proporciona información útil para la compilación del cliente de MySQL y de la conexión al servidor de base de datos MySQL. Necesitamos usar las siguientes dos opciones:
1 Pasar la opción --libs - librerías y opciones requeridad para crear un link con la librería de Mysql Client
En mi caso este es el resultado:
demo:~# mysql_config --libs
-L/usr/lib/mysql -lmysqlclient
2 Pasar la opción --cflags - Compiler flags to find include files and critical compiler flags and defines used when compiling the libmysqlclient library
En mi caso este es el resultado:
demo:~# mysql_config --cflags
-I/usr/include/mysql -DBIG_JOINS=1 -fPIC
Necesitamos antes pasarle la opción al GNU C compiler osea gcc. Asi que compilamos el programa de la siguiente manera
$ gcc -o output-file $(mysql_config --cflags) mysql-c-api.c $(mysql_config --libs)
En mi caso:
demo:~# gcc -o output-file $(mysql_config --cflags) mysql-c-api.c $(mysql_config --libs)
mysql-c-api.c: In function âmainâ:
mysql-c-api.c:25: warning: incompatible implicit declaration of built-in function âexitâ
mysql-c-api.c:31: warning: incompatible implicit declaration of built-in function âexitâ
Ahora ejecutamos el programa:
demo:~# ./output-file
MySQL Tables in mysql database:
columns_priv
db
func
help_category
help_keyword
help_relation
help_topic
host
proc
procs_priv
tables_priv
time_zone
time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
user
No hay comentarios.:
Publicar un comentario