Med denne veiledningen presenterer jeg for samfunnet hvordan du får tilgang til en MySQL-database fra C-programmeringsspråket og uten å bruke for mange avhengigheter, med bare
libmysqlclient
Jeg håper det vil være nyttig for de som trengte denne typen dokumentasjon og dermed fortsette å bidra til SL-samfunnet og hjelpe de som ikke har INTERNETT.
Konfigurasjon
Først må vi sjekke at vi har designbibliotekene installert *-dev
for å kunne få tilgang fra C / C ++ til MySQL.
mysql_config --libs
Det skal se ut som dette:
-Wl, -Bsymbolic-funksjoner –L / usr / lib / mysql -lmysqlclient rdynamic
I tilfelle du sjekker at biblioteket ikke er installert, installerer vi det med følgende kommando:
sudo apt-get install libmysqlclient-dev mysql_config --cflags -I / usr / include / mysql -DBIG_JOINS = 1 -fno-streng-aliasing -DUNIV_LINUX -DUNIV_LINUX
Siden vi bekrefter og installerer det vi trenger for koblingen mellom MySQL og C, fortsetter vi med å lage databasen:
OPPRETT DATABASE-test; BRUK test; OPPRETT TABELLdata (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, name varchar (40), age int); INSERT IN data data VALUES (NULL, 'Alma Hernandez', 28), (NULL, 'Jose Sanchez', 39), (NULL, 'Martin loera', 25), (NULL, 'Leonardo Cortez', 26), (NULL , 'Gustavo Romero', 25);
Programmering og kompilering
Vi fortsetter å lage koden:
Query.c
/ * biblioteker å bruke * / # inkluderer / * bibliotek som lar oss bruke forbindelser og spørsmål med MySQL * / #include / * For å bruke printf, etc. * / int main () {MYSQL * conn; / * tilkoblingsvariabel for MySQL * / MYSQL_RES * res; / * variabel som vil inneholde resultatet av spørringen * / MYSQL_ROW rad; / * variabel som vil inneholde feltene for hver post som er konsultert * / char * server = "localhost"; / * serveradresse 127.0.0.1, localhost eller ip-adresse * / char * bruker = "root"; / * bruker for å spørre databasen * / char * password = "root"; / * passord for den aktuelle brukeren * / char * database = "test"; / * navn på databasen du vil spørre om * / conn = mysql_init (NULL); / * initialisering for å nullkoble tilkoblingen * / / * koble til databasen * / if (! mysql_real_connect (conn, server, bruker, passord, database, 0, NULL, 0)) {/ * definere tilkoblingsparametrene som er satt tidligere * / fprintf (stderr, "% s \ n", mysql_error (conn)); / * hvis det er en feil, definer hvilken feil som var * / exit (1); } / * send SQL-spørring * / if (mysql_query (conn, "velg * fra data")) {/ * definisjon av spørringen og opprinnelsen til forbindelsen * / fprintf (stderr, "% s \ n", mysql_error ( conn)); utgang (1); } res = mysql_use_result (conn); printf("ID \ tName \ t \ age \ n"); mens ((rad = mysql_fetch_row (res))! = NULL) / * går gjennom variabelen res med alle postene som er oppnådd for bruk * / printf("% s \ t% s \ t% s \ n", rad [0], rad [1], rad [2]); / * radvariabelen blir en matrise for antall felt i tabellen * / / * res-variabelen frigjøres og forbindelsen er lukket * / mysql_free_result (res); mysql_close (conn); }
Vi kompilerer med:
gcc -o Query $ (mysql_config --cflags) Query.c $ (mysql_config -–libs)
Bekreftelse
Vi utfører:
./Spørsmål
Fuente: Hugo4295s blogg
Bra det, lagret i mitt arsenal av skript og opplæringsprogrammer på konsollen! +1 for din partner ...
Hei, mange gratulasjoner med alt som er på nettet angående dette problemet, din var nærmest løsningen. bare litt tvil, hvorfor får jeg ikke den kjørbare ??
på tidspunktet for komprimering markerer det ingen feil, men det genererer ikke ./ser4
Noen ide om hvordan du gjør det i Fedora?
Jeg er ikke uenig i å dele informasjonen, men hvis copyright ikke er plassert siden dette eksemplet ble laget av meg siden 2011, og her er adressen til den opprinnelige kilden
http://hugo4295.blogspot.mx/search?q=MYSQL
Ikke noe problem Victor, men hvis du merker at jeg ikke tok artikkelen fra nettstedet ditt, men fra en annen der de dessverre ikke la kilden. Akkurat nå redigerer jeg imidlertid artikkelen .. 😉
utmerket deling av kunnskap stor frihet
Og hvordan kan det settes inn ???