В этом руководстве я представляю сообществу, как получить доступ к базе данных 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, приступаем к созданию базы данных:
CREATE DATABASE test; ЕГЭ тест; СОЗДАТЬ ТАБЛИЧНЫЕ данные (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, имя varchar (40), age int); INSERT INTO data VALUES (NULL, 'Alma Hernandez', 28), (NULL, 'Jose Sanchez', 39), (NULL, 'Martin loera', 25), (NULL, 'Leonardo Cortez', 26), (NULL , 'Густаво Ромеро', 25);
Программирование и компиляция
Продолжаем создавать код:
Query.c
/ * библиотеки для использования * / #include / * библиотека, которая позволяет нам использовать соединения и запросы с MySQL * / #include / * Чтобы использовать printf и т. Д. * / int main () {MYSQL * conn; / * переменная подключения для MySQL * / MYSQL_RES * res; / * переменная, которая будет содержать результат запроса * / MYSQL_ROW row; / * переменная, которая будет содержать поля для каждой запрашиваемой записи * / char * server = "localhost"; / * адрес сервера 127.0.0.1, localhost или IP-адрес * / char * user = "root"; / * пользователь, запрашивающий базу данных * / char * password = "root"; / * пароль для рассматриваемого пользователя * / char * database = "test"; / * имя базы данных для запроса * / conn = mysql_init (NULL); / * инициализация для обнуления соединения * / / * подключение к базе данных * / if (! mysql_real_connect (conn, server, user, password, database, 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); 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 (соединение); }
Мы компилируем с помощью:
gcc -o Query $ (mysql_config --cflags) Query.c $ (mysql_config -–libs)
Проверка
Выполняем:
./Query
источник: Блог пользователя Hugo4295
Хорошо, что сохранились в моем арсенале скрипты и обучающие программы на консоли! +1 для вашего партнера ...
Привет, поздравляю со всем, что есть в сети по поводу этой проблемы, ваше решение было наиболее близким к решению. немного сомневаюсь, почему я не получаю исполняемый файл ??
во время comílar он не отмечает никаких ошибок, но не генерирует ./ser4
Есть идеи, как это сделать в Fedora?
Я не возражаю поделиться информацией, но если авторские права не размещены, так как этот пример был сделан мной с 2011 года, и вот адрес первоисточника
http://hugo4295.blogspot.mx/search?q=MYSQL
Нет проблем, Виктор, но если вы заметили, я взял статью не с вашего сайта, а с другого, где, к сожалению, не поместили источник. Однако прямо сейчас редактирую статью .. 😉
отличный обмен знаниями большая свобода
А как можно прошивки сделать ???