Med denne vejledning præsenterer jeg for samfundet, hvordan man får adgang til en MySQL-database fra C-programmeringssproget og uden at bruge for mange afhængigheder, med bare
libmysqlclient
Jeg håber, det vil være nyttigt for dem, der har brug for denne type dokumentation og dermed fortsat bidrage til SL-samfundet og hjælpe dem, der ikke har INTERNET.
konfiguration
Først skal vi kontrollere, at designbibliotekerne er installeret *-dev
for at kunne få adgang fra C / C ++ til MySQL.
mysql_config --libs
Det skal se sådan ud:
-Wl, -Bsymboliske-funktioner –L / usr / lib / mysql -lmysqlclient rdynamic
Hvis du kontrollerer, at biblioteket ikke er installeret, 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
Da vi verificerer og installerer det, vi har brug for til linket mellem MySQL og C, fortsætter vi med oprettelsen af databasen:
OPRET DATABASE-test; BRUG test; Opret TABEL-data (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, name varchar (40), age int); INDSÆT I dataVÆRDIER (NULL, 'Alma Hernandez', 28), (NULL, 'Jose Sanchez', 39), (NULL, 'Martin loera', 25), (NULL, 'Leonardo Cortez', 26), (NULL , 'Gustavo Romero', 25);
Programmering og kompilering
Vi fortsætter med at oprette koden:
Forespørgsel. C
/ * biblioteker, der skal bruges * / #include / * bibliotek, der giver os mulighed for at gøre brug af forbindelser og forespørgsler med MySQL * / #include / * For at bruge printf osv. * / int main () {MYSQL * conn; / * forbindelsesvariabel til MySQL * / MYSQL_RES * res; / * variabel, der indeholder resultatet af forespørgslen * / MYSQL_ROW række; / * variabel, der indeholder felterne for hver post, der høres * / char * server = "localhost"; / * serveradresse 127.0.0.1, localhost eller ip-adresse * / char * bruger = "root"; / * bruger til at søge i databasen * / char * password = "root"; / * adgangskode til den pågældende bruger * / char * database = "test"; / * navn på den database, der skal forespørges * / conn = mysql_init (NULL); / * initialisering for at nulstille forbindelsen * / / * oprette forbindelse til databasen * / hvis (! mysql_real_connect (conn, server, bruger, adgangskode, database, 0, NULL, 0)) {/ * definer de tidligere indstillede forbindelsesparametre * / fprintf (stderr, "% s \ n", mysql_error (conn)); / * hvis der er en fejl, definer hvilken fejl der var * / exit (1); } / * send SQL-forespørgsel * / if (mysql_query (konn, "vælg * fra data")) {/ * definition af forespørgslen og oprindelsen til forbindelsen * / fprintf (stderr, "% s \ n", mysql_error ( conn)); udgang (1); } res = mysql_use_result (conn); printf("ID \ tName \ t \ age \ n"); mens ((række = mysql_fetch_row (res))! = NULL) / * løber gennem den variable res med alle de poster, der er opnået til brug * / printf("% s \ t% s \ t% s \ n", række [0], række [1], række [2]); / * rækkevariablen bliver en matrix for antallet af felter i tabellen * / / * res-variablen frigives, og forbindelsen lukkes * / mysql_free_result (res); mysql_close (konn); }
Vi sammensætter med:
gcc -o Query $ (mysql_config --cflags) Query.c $ (mysql_config -–libs)
Verifikation
Vi udfører:
./Forespørgsel
kilde: Hugo4295s blog
Godt det, gemt i mit arsenal af scripts og tutorials på konsollen! +1 til din partner ...
Hej, mange tillykke med alt, hvad der er på nettet vedrørende dette emne, din var tættest på løsningen. bare en lille tvivl, hvorfor får jeg ikke den eksekverbare ??
på tidspunktet for komprimering markerer den ikke nogen fejl, men den genererer ikke ./ser4
Har du nogen idé om, hvordan du gør det i Fedora?
Jeg er ikke uenig i at dele oplysningerne, men hvis ophavsretten ikke er placeret, da dette eksempel blev lavet af mig siden 2011, og her er adressen på den oprindelige kilde
http://hugo4295.blogspot.mx/search?q=MYSQL
Intet problem Victor, men hvis du bemærker, tog jeg ikke artiklen fra dit websted, men fra en anden, hvor de desværre ikke placerede kilden. Men lige nu redigerer jeg artiklen .. 😉
fremragende deling af viden stor frihed
Og hvordan kan indsættelser foretages ???