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.