Databáze už je možné dnes najít prakticky kdekoliv. Ukládají se do nich uživatelská data, případně konfigurační data a podobně. Ukládání do databáze ušetří při programování spoustu času díky tomu, že není potřeba složitě zajišťovat spolehlivost uložení dat.
V tomto článku se nebudu zabývat instalací nebo konfigurací MySQL serveru, ale pouze aplikačním programem, který se k nakonfigurované databázi připojí.
Nejdříve je nutné nainstalovat vývojové balíky pro MySQL klienta. V distribucích založených na Debianu to lze provést pomocí následujícího příkazu
sudo apt-get install libmysqlclient-dev
Zda je tento balík správně nainstalován lze ověřit vypsáním parametrů pro překlad. Výstup by měl být podobný ukázkovému
mysql_config --cflags --libs -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g -DNDEBUG -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -ldl
Nyní už na řadu přichází vlastní kód, který provede připojení a vypsání obsahu databáze.
/* Simple MySQL dumping application */
#include <stdio.h>
#include <mysql.h>
void main(int argc, char *argv[]){
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server = "localhost";
char *user = "user";
char *passwd = "password";
char *database = "database";
/* Initialize structure */
conn = mysql_init(NULL);
if(!mysql_real_connect(conn, server, user, passwd,
database, 0, NULL, 0))
{
fprintf(stderr, "Error happen - NOT CONNECTED\n");
fprintf(stderr, "MySQL err: %s\n", mysql_error(conn));
return;
}
/* Send SQL query */
if(mysql_query(conn, "show tables"))
{
fprintf(stderr, "Error happen - QUERY\n");
fprintf(stderr, "MySQL err: %s\n", mysql_error(conn));
return;
}
res = mysql_use_result(conn);
/* Print table */
while((row = mysql_fetch_row(res)) != NULL)
{
printf("%s\n", row[0]);
}
/* Clean and disconnect */
mysql_free_result(res);
mysql_close(conn);
}
Tento kód je možné skompilovat následujícím příkazem
gcc -o MySQLConnector $(mysql_config --cflags) main.c $(mysql_config --libs)
Kód je na důležitých částech komentován, tak snad není potřeba psát něco více.
