Con questo tutorial presento alla comunità come accedere a un database MySQL dal linguaggio di programmazione C e senza usare troppe dipendenze, con solo
libmysqlclient
Spero che possa essere utile a chi aveva bisogno di questo tipo di documentazione e quindi continuare a contribuire alla comunità SL e aiutare chi non ha INTERNET.
Configurazione
Per prima cosa dobbiamo verificare di aver installato le librerie di progettazione *-dev
per poter accedere da C / C ++ a MySQL.
mysql_config --libs
Dovrebbe apparire qualcosa del genere:
-Wl, -Bsymbolic-functions -L / usr / lib / mysql -lmysqlclient rdynamic
Nel caso in cui verifichi che la libreria non è installata, la installiamo con il seguente comando:
sudo apt-get install libmysqlclient-dev mysql_config --cflags -I / usr / include / mysql -DBIG_JOINS = 1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX
Avendo verificato e installato quello che ci serve per il collegamento tra MySQL e C, procediamo alla creazione del database:
CREATE DATABASE test; USE test; CREATE TABLE data (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, nome 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);
Programmazione e compilazione
Continuiamo a creare il codice:
Query.c
/ * librerie che useremo * / #include / * libreria che ci consente di utilizzare connessioni e query con MySQL * / #include / * Per utilizzare printf, ecc. * / int main () {MYSQL * conn; / * variabile di connessione per MySQL * / MYSQL_RES * res; / * variabile che conterrà il risultato della query * / MYSQL_ROW riga; / * variabile che conterrà i campi per ogni record consultato * / char * server = "localhost"; / * indirizzo server 127.0.0.1, localhost o indirizzo ip * / char * user = "root"; / * utente per interrogare il database * / char * password = "root"; / * password per l'utente in questione * / char * database = "test"; / * nome del database da interrogare * / conn = mysql_init (NULL); / * inizializzazione per annullare la connessione * / / * connettersi al database * / if (! mysql_real_connect (conn, server, utente, password, database, 0, NULL, 0)) {/ * definire i parametri di connessione precedentemente impostato * / fprintf (stderr, "% s \ n", mysql_error (conn)); / * se c'è un errore definire quale errore era * / exit (1); } / * invia una query SQL * / if (mysql_query (conn, "select * from data")) {/ * definizione della query e origine della connessione * / fprintf (stderr, "% s \ n", mysql_error ( conn)); uscita (1); } res = mysql_use_result (conn); printf("ID \ tNome \ t \ età \ n"); while ((row = mysql_fetch_row (res))! = NULL) / * scorre la variabile res con tutti i record ottenuti per l'uso * / printf("% s \ t% s \ t% s \ n", riga [0], riga [1], riga [2]); / * la variabile di riga diventa un array per il numero di campi nella tabella * / / * la variabile res viene rilasciata e la connessione viene chiusa * / mysql_free_result (res); mysql_close (conn); }
Compiliamo con:
gcc -o Query $ (mysql_config --cflags) Query.c $ (mysql_config -–libs)
Verifica
Eseguiamo:
./Query
fonte: Blog di Hugo4295
Bene, salvato nel mio arsenale di script e tutorial su console! +1 per il tuo partner ...
Ciao, tante congratulazioni per tutto ciò che c'è sul web riguardo a questo problema, la tua è stata la più vicina alla soluzione. solo un piccolo dubbio, perché non ottengo l'eseguibile ??
al momento del comílar non segnala alcun errore ma non genera il ./ser4
Qualche idea su come farlo in Fedora?
Non sono in disaccordo con la condivisione delle informazioni ma se il copyright non è posto poiché questo esempio è stato fatto da me dal 2011 ed ecco l'indirizzo della fonte originale
http://hugo4295.blogspot.mx/search?q=MYSQL
Nessun problema Vittorio, ma se noti non ho preso l'articolo dal tuo sito, ma da un altro dove purtroppo non hanno messo la fonte. Tuttavia, in questo momento modifico l'articolo .. 😉
ottima condivisione della conoscenza grande libertà
E come si possono fare gli inserimenti ???