С този урок представям на общността как да осъществя достъп до база данни MySQL от езика за програмиране C и без да използвам твърде много зависимости, само с
libmysqlclient
Надявам се, че ще бъде полезно за тези, които са се нуждаели от този тип документация и по този начин ще продължат да допринасят за общността на SL и да помагат на тези, които нямат INTERNET.
конфигурация
Първо трябва да проверим дали имаме инсталирани библиотеки за проектиране *-dev
да има достъп до C / C ++ до MySQL.
mysql_config --libs
Трябва да изглежда нещо подобно:
-Wl, -Bsymbolic-functions -L / usr / lib / mysql -lmysqlclient rdynamic
В случай, че проверите дали библиотеката не е инсталирана, ние я инсталираме със следната команда:
sudo apt-get инсталиране libmysqlclient-dev mysql_config --cflags -I / usr / include / mysql -DBIG_JOINS = 1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX
Тъй като проверяваме и инсталираме това, което ни е необходимо за връзката между MySQL и C, пристъпваме към създаването на базата данни:
СЪЗДАЙТЕ тест за база данни; USE тест; СЪЗДАВАНЕ НА ТАБЛИЦА данни (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, име varchar (40), възраст int); ВЪВЕЖДАНЕ В СТОЙНОСТИ за данни (NULL, 'Alma Hernandez', 28), (NULL, 'Jose Sanchez', 39), (NULL, 'Martin loera', 25), (NULL, 'Leonardo Cortez', 26), (NULL , „Густаво Ромеро“, 25);
Програмиране и компилация
Продължаваме да създаваме кода:
Запитване.c
/ * библиотеки за използване * / #include / * библиотека, която ни позволява да използваме връзки и заявки с MySQL * / #include / * За да се използва printf и др. * / int main () {MYSQL * conn; / * променлива на връзката за MySQL * / MYSQL_RES * res; / * променлива, която ще съдържа резултата от заявката * / MYSQL_ROW ред; / * променлива, която ще съдържа полетата за всеки записан запис * / char * server = "localhost"; / * адрес на сървъра 127.0.0.1, localhost или ip адрес * / char * user = "root"; / * потребител за запитване към базата данни * / char * password = "root"; / * парола за въпросния потребител * / char * база данни = "тест"; / * име на базата данни за заявка * / conn = mysql_init (NULL); / * инициализация за нулиране на връзката * / / * свързване към базата данни * / if (! mysql_real_connect (conn, сървър, потребител, парола, база данни, 0, NULL, 0)) {/ * дефинирайте параметрите на връзката предварително зададен * / fprintf (stderr, "% s \ n", mysql_error (conn)); / * ако има грешка, дефинирайте коя грешка е * / exit (1); } / * изпращане на SQL заявка * / if (mysql_query (conn, "select * from data")) {/ * дефиниция на заявката и произхода на връзката * / fprintf (stderr, "% s \ n", mysql_error ( conn)); изход (1); } res = mysql_use_result (conn); ФОРМАТ("ID \ tName \ t \ age \ n"); while ((row = mysql_fetch_row (res))! = NULL) / * цикъл през променливата res с всички записи, получени за използване * / ФОРМАТ("% s \ t% s \ t% s \ n", ред [0], ред [1], ред [2]); / * редовата променлива се превръща в масив за броя на полетата в таблицата * / / * променливата res се освобождава и връзката се затваря * / mysql_free_result (res); mysql_close (conn); }
Ние компилираме с:
gcc -o Заявка $ (mysql_config --cflags) Query.c $ (mysql_config -–libs)
Проверка
Изпълняваме:
./Query
Fuente: Блогът на Hugo4295
Добре, че запазено в моя арсенал от скриптове и уроци на конзолата! +1 за вашия партньор ...
Здравейте, много поздравления за всичко, което е в мрежата по този въпрос, вашият беше най-близо до решението. само малко съмнение, защо не получа изпълнителната програма ??
по време на comílar не отбелязва никаква грешка, но не генерира ./ser4
Някаква идея как да го направя във Fedora?
Не съм съгласен с споделянето на информацията, но ако авторските права не са поставени, тъй като този пример е направен от мен от 2011 г. и тук е адресът на оригиналния източник
http://hugo4295.blogspot.mx/search?q=MYSQL
Няма проблем Виктор, но ако забележите, че не съм взел статията от вашия сайт, а от друг, където за съжаление не са поставили източника. В момента обаче редактирам статията .. 😉
отлично споделяне на знания голяма свобода
И как могат да се правят вмъквания ???