Ovim tutorijalom predstavljam zajednici kako pristupiti MySQL bazi podataka iz programskog jezika C i bez korištenja previše ovisnosti, sa samo
libmysqlclient
Nadam se da će biti od koristi onima kojima je ovakva dokumentacija bila potrebna i na taj način nastaviti doprinositi SL zajednici i pomoći onima koji nemaju INTERNET.
konfiguracija
Prvo moramo provjeriti da li imamo instalirane biblioteke dizajna *-dev
da biste mogli pristupiti MySQL-u sa C/C++.
mysql_config --libs
Nešto poput ovoga bi se trebalo pojaviti:
-Wl, -Bsymbolic-functions –L/usr/lib/mysql -lmysqlclient rdynamic
Ako pokazuje da biblioteka nije instalirana, instaliramo je sljedećom naredbom:
sudo apt-get install libmysqlclient-dev mysql_config --cflags -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX
Sada kada smo verifikovali i instalirali šta nam je potrebno za vezu između MySQL-a i C-a, nastavljamo sa kreiranjem baze podataka:
CREATE DATABASE test; USE test; CREATE TABLE podaci (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, ime varchar(40), age int); UMETNI U VRIJEDNOSTI podataka (NULL, 'Alma Hernandez', 28), (NULL, 'Hose Sanchez', 39), (NULL, 'Martin loera', 25), (NULL, 'Leonardo Cortez', 26), (NULL , 'Gustavo Romero', 25);
Programiranje i kompilacija
Nastavljamo sa kreiranjem koda:
Query.c
/* biblioteke koje ćemo koristiti */ #include /* biblioteka koja nam omogućava da koristimo veze i upite sa MySQL */ #include /* Da biste mogli koristiti printf, itd. */ int main() { MYSQL *conn; /* varijabla veze za MySQL */ MYSQL_RES *res; /* varijabla koja će sadržavati rezultat upita */ MYSQL_ROW red; /* varijabla koja će sadržavati polja za svaki konsultirani zapis */ char *server = "localhost"; /*adresa servera 127.0.0.1, localhost ili ip adresa */ char *user = "root"; /*korisnik za upit baze podataka */ char *password = "root"; /* lozinka za dotičnog korisnika */ char *database = "test"; /*ime baze podataka za upit */ conn = mysql_init(NULL); /*inicijalizirati vezu na null */ /* povezivanje s bazom podataka */ if (!mysql_real_connect(conn, server, korisnik, lozinka, baza podataka, 0, NULL, 0)) { /* definiramo parametre veze prije uspostavljanja */ fprintf(stderr, "%s\n", mysql_error(conn)); /* ako postoji greška definišemo koja je greška */ exit(1); } /* pošalji SQL upit */ if (mysql_query(conn, "odaberi * iz podataka")) { /* definicija upita i porijekla veze */ fprintf(stderr, "%s\n", mysql_error( conn)); izlaz(1); } res = mysql_use_result(conn); printf("ID\tIme\t\starost\n"); dok ((red = mysql_fetch_row(res)) != NULL) /* petlja kroz varijablu res sa svim zapisima dobijenim za upotrebu */ printf("%s\t%s\t%s \n", red[0],red[1],red[2]); /* varijabla reda se pretvara u niz prema broju polja u tabeli */ /* varijabla res se oslobađa i veza se zatvara */ mysql_free_result(res); mysql_close(conn); }
Kompajliramo sa:
gcc -o Upit $(mysql_config --cflags) Query.c $(mysql_config --libs)
Verifikacija
Izvršavamo:
./Consultation
Izvor: Blog Hugo4295
Dobar, sačuvan u mom arsenalu konzolnih skripti i tutorijala! +1 za vašeg partnera…
Pozdrav, čestitam sve što postoji na webu u vezi sa ovom temom, vaše je bilo najbliže rješenju. Samo malo pitanje, zašto ne mogu dobiti izvršni fajl?
Kada dođe vrijeme za kompajliranje, ne pokazuje nikakve greške, ali ne generiše ./ser4
Imate li ideju kako to učiniti u Fedori?
Ne slažem se sa dijeljenjem informacija, ali se ne slažem sa nepostavljanjem autorskih prava jer sam ovaj primjer napravio od 2011. godine, a ovdje je adresa originalnog izvora
http://hugo4295.blogspot.mx/search?q=MYSQL
Nema problema Viktore, ali ako primjećuješ, nisam uzeo članak sa tvog sajta, već sa drugog gde nažalost nisu stavili izvor. Međutim, trenutno uređujem članak.. 😉
odlična deljenje znanja velika sloboda
A kako možete napraviti umetke???