За допомогою цього підручника я представляю спільноті, як отримати доступ до бази даних MySQL з мови програмування C і не використовуючи занадто багато залежностей, просто
libmysqlclient
Я сподіваюся, це буде корисно для тих, хто потребував такого роду документації, і таким чином продовжуватиме робити внесок у співтовариство з питань SL та допомагати тим, хто не має ІНТЕРНЕТ.
конфігурація
Спочатку ми повинні перевірити, чи встановлені бібліотеки дизайну *-dev
мати доступ до C / C ++ до MySQL.
mysql_config --libs
Це повинно виглядати приблизно так:
-Wl, -Bsymbolic-functions –L / usr / lib / mysql -lmysqlclient rdynamic
Якщо ви переконаєтесь, що бібліотека не встановлена, ми встановлюємо її наступною командою:
sudo apt-get install 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), age 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, локальний хост або ip-адреса * / char * user = "root"; / * користувач запитує базу даних * / char * password = "root"; / * пароль для відповідного користувача * / char * database = "test"; / * ім'я бази даних для запиту * / 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 ( зв’язок)); вихід (1); } res = mysql_use_result (conn); printf("ID \ tName \ t \ age \ n"); while ((row = mysql_fetch_row (res))! = NULL) / * цикл через змінну res з усіма записами, отриманими для використання * / printf("% 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
Фуенте: Блог Hugo4295
Добре, що це збережено у моєму арсеналі сценаріїв та підручників на консолі! +1 для вашого партнера ...
Привіт, багато привітань з усім, що є в Інтернеті щодо цього питання, ваше найближче до рішення. лише трохи сумнівів, чому б мені не отримати виконуваний файл ??
на час comílar він не позначає жодної помилки, але не генерує ./ser4
Будь-яка ідея, як це зробити у Fedora?
Я не погоджуюся з наданням інформації, але якщо авторські права не розміщені, оскільки цей приклад був зроблений мною з 2011 року, і ось адреса першоджерела
http://hugo4295.blogspot.mx/search?q=MYSQL
Не біда, Вікторе, але якщо ви помітили, я взяв статтю не з вашого сайту, а з іншого, де, на жаль, вони не розмістили джерело. Однак зараз я редагую статтю .. 😉
відмінний обмін знаннями велика свобода
А як можна робити вставки ???