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

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.


Posted

in

by

Tags: