S tímto tutoriálem představuji komunitě, jak přistupovat k databázi MySQL z programovacího jazyka C a bez použití příliš mnoha závislostí, pouze s
libmysqlclient
Doufám, že to bude užitečné pro ty, kteří potřebovali tento typ dokumentace, a tak i nadále přispívat ke komunitě SL a pomáhat těm, kteří nemají INTERNET.
konfigurace
Nejprve musíme zkontrolovat, zda máme nainstalované knihovny návrhů *-dev
mít přístup z C / C ++ do MySQL.
mysql_config --libs
Měl by vypadat asi takto:
-Wl, -Bsymbolic-functions –L / usr / lib / mysql -lmysqlclient rdynamic
V případě, že zkontrolujete, že knihovna není nainstalována, nainstalujeme ji pomocí následujícího příkazu:
sudo apt-get install libmysqlclient-dev mysql_config --cflags -I / usr / include / mysql -DBIG_JOINS = 1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX
Protože jsme ověřili a nainstalovali, co potřebujeme pro propojení mezi MySQL a C, přistoupíme k vytvoření databáze:
VYTVOŘIT test DATABÁZE; POUŽITÍ test; CREATE TABLE data (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, name varchar (40), age int); INSERT INTO data VALUES (NULL, 'Alma Hernandez', 28), (NULL, 'Jose Sanchez', 39), (NULL, 'Martin loera', 25), (NULL, 'Leonardo Cortez', 26), (NULL , „Gustavo Romero“, 25);
Programování a kompilace
Pokračujeme ve vytváření kódu:
Dotaz.c
/ * knihovny použijeme * / #include / * knihovna, která nám umožňuje využívat připojení a dotazy s MySQL * / #include / * Chcete-li použít printf atd. * / int main () {MYSQL * conn; / * proměnná připojení pro MySQL * / MYSQL_RES * res; / * proměnná, která bude obsahovat výsledek dotazu * / MYSQL_ROW řádek; / * proměnná, která bude obsahovat pole pro každý konzultovaný záznam * / char * server = "localhost"; / * adresa serveru 127.0.0.1, localhost nebo IP adresa * / char * user = "root"; / * uživatel pro dotazování na databázi * / char * heslo = "root"; / * heslo pro dotyčného uživatele * / char * databáze = "test"; / * název databáze k dotazu * / conn = mysql_init (NULL); / * inicializace pro zrušení připojení * / / * připojení k databázi * / if (! mysql_real_connect (conn, server, uživatel, heslo, databáze, 0, NULL, 0)) {/ * definujte parametry připojení dříve nastaveno * / fprintf (stderr, "% s \ n", mysql_error (conn)); / * pokud existuje chyba, definujte, která chyba byla * / exit (1); } / * odeslat dotaz SQL * / if (mysql_query (conn, "select * from data")) {/ * definice dotazu a původ spojení * / fprintf (stderr, "% s \ n", mysql_error ( conn)); výstup (1); } res = mysql_use_result (conn); printf("ID \ tName \ t \ age \ n"); while ((řádek = mysql_fetch_row (res))! = NULL) / * smyčka přes proměnnou res se všemi záznamy získanými pro použití * / printf("% s \ t% s \ t% s \ n", řádek [0], řádek [1], řádek [2]); / * z proměnné řádku se stane pole podle počtu polí v tabulce * / / * uvolní se proměnná res a spojení se uzavře * / mysql_free_result (res); mysql_close (conn); }
Sestavujeme s:
gcc -o Dotaz $ (mysql_config --cflags) Dotaz.c $ (mysql_config --–libs)
Ověření
Provádíme:
./Dotaz
zdroj: Blog uživatele Hugo4295
Dobře, uloženo v mém arzenálu skriptů a výukových programů na konzole! +1 pro vašeho partnera ...
Dobrý den, mnoho gratulujeme ke všemu, co je na webu ohledně tohoto problému, vaše řešení bylo nejblíže k řešení. jen malá pochybnost, proč nezískám spustitelný soubor ??
v době comilar neoznačuje žádnou chybu, ale negeneruje ./ser4
Nějaký nápad, jak to udělat ve Fedoře?
Nesouhlasím se sdílením informací, ale pokud nejsou umístěna autorská práva, protože tento příklad jsem vytvořil já od roku 2011 a zde je adresa původního zdroje
http://hugo4295.blogspot.mx/search?q=MYSQL
Žádný problém, Victore, ale pokud si všimnete, nevzal jsem si článek z vašeho webu, ale z jiného, kde bohužel nezadali zdroj. Právě teď však článek upravuji .. 😉
vynikající sdílení znalostí, velká svoboda
A jak lze vkládat ???