Připojení k MySQL serveru pomocí jazyka C
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
1 |
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
1 2 3 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
/* 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
1 |
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.