Как подключиться к бд mysql из c
Перейти к содержимому

Как подключиться к бд mysql из c

C: libmysqlclient – примеры работы с MySQL API

Давно не писал на С (последний раз – почти год тому, см. What is: Linux namespaces, примеры PID и Network namespaces).

Немного за ним заскучал, ибо язык интересный и заставляет местами поломать голову, потому решил немного освежить память.

Ниже приводятся примеры работы с сервером MySQL/MariaDB на С, используя API из библиотеки libmysqlclient .

Примеры взяты из поста MySQL C API programming tutorial с небольшими изменениями и отсебятинкой.

Получившиеся примеры доступны в репозитории тут>>>.

Устаналиваем на Ubuntu/Debian с помощью apt :

Первый пример

Напишем первый пример, который выполнит подключение к серверу MySQL, и выведет его версию:

Убедимся, что это правда:

Кратко рассмотрим сам код:

  • #include <my_global.h> и #include <mysql.h> : включаем заголовочные файлы для работы с MySQL, которые расположены в каталоге /usr/include/mysql/ , путь к которому передадим через вызов mysql_config (см. ниже). В частности – /usr/include/mysql/mysql.h содежит описание mysql_get_client_info()
  • затем вызываем mysql_get_client_info() , которая возвращает версию используемой библиотеки
gcc и mysql_config

При компиляции выше мы использовали вызов mysql_config , что бы получить пути к используемым библиотекам и флагам сборки MySQL-клиента.

Можно вызвать mysql_config напрямую, что бы посмотреть эти данные:

Или отобразить только неоходимые данные, что мы и делаем при вызове gcc :

Создание базы данных

В следующем примере – выполним подключение к серверу и запрос на создание новой базы данных.

Тут нам потребуются данные доступа:

  • имя хоста – cdb-example.setevoy.org.ua (через CNAME направлено на AWS RDS инстанс с MariaDB)
  • имя пользователя – setevoy
  • пароль пользователя

Подключаемся к серверу БД, создаём пользоваеля:

Приступаем к коду:

testdb появилась, всё работает.

Процесс выполнения программы:

  • MYSQL *con = mysql_init(NULL) – с помощью mysql_init() инициализируем создание новой сессии для создания подключения
  • if (con == NULL) – проверяем его состояние, если сессия не создана – выходим с ошибкой, используя exit(1);
  • mysql_real_connect(con, «cdb-example.setevoy.org.ua», «setevoy», «[email protected]») – используя mysql_real_connect() создаём подключение, используя созданную сессию ( con ), и передавая имя хоста, пользователя и пароль, и тут же проверяем его состояние с помощью if mysql_real_connect() == NULL
  • mysql_query(con, «CREATE DATABASE testdb») – с помощью mysql_query() выполняем запрос на создание базы данных
  • mysql_close() – закрываем сессию, созданную с помощью mysql_init()

Создание и наполнение таблицы

Теперь у нас есть пользователь, и база.

Следующим шагом – создадим в этой базе таблицу, и запишем в неё данные:

Тут, что бы не писать один и тот же код при каждом выполнении запросов к MySQL, мы сначала определяем единую функцию, которую будем использовать для проверки успешности подключения:

Затем подключаемся к базе, удаляем таблицу, если она есть ( mysql_query(con, «DROP TABLE IF EXISTS ExampleTable») ), создаём новую таблицу с тремя колонками ( mysql_query(con, «CREATE TABLE ExampleTable(Id INT, TextCol TEXT, IntCol INT)» ), и вносим тестовые данные ( mysql_query(con, «INSERT INTO ExampleTable VALUES(1, ‘TextValue’, 12345)») ).

Получение данных из базы

Теперь, когда данные в базе есть – попробуем их оттуда получить.

Для этого мы выполним:

  1. создание подключения
  2. выполнение запроса
  3. получение результата

Код может выглядить так:

Первое отличие – тут мы выносим параметры для подключения к серверу в макросы препроцессора, создавая такие себе const variables:

И затем используем их при вызове функций:

Не очень уверен, насколько кошерно задавать значения через макрос (хотя пишут, что это нормальный подход), можно использовать другой вариант – с помощью const :

Затем с помощью mysql_store_result() мы сохраняем результат запроса в структуре MYSQL_RES :

Потом подсчитываем кол-во колонок в таблице, используя mysql_num_fields() :

А затем в цикле while проверяем каждую строку, и выводим её на экран:

В строке row[i] ? row[i] : «NULL» проверяем условие: если row[i] имеет значение – то выводим его с помощью модификатора %s (string) для printf() , а если пусто – то пропускаем.

Последним шагом – удаляем данные и закрываем соединение:

Собираем, как в примерах выше, запускаем:

Получение ID

Ещё один пример работы с библиотекой MySQL – получение ID последней добавленной в таблицу записи.

Для этого можно использовать функцию mysql_insert_id() , которая работает, если колонка Id создана с AUTO_INCREMENT .

Используем такой код:

В оригинале для добавления записей использовался немного другой подход:

Но я решил немого его “улучшить”, и в данном случае используется два массива, в которых мы храним данные:

А затем в цикле перебираются их значения, и с помощью sprintf() формируется строка с запросом в переменной buffer:

Как подключиться к бд mysql из c

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

MySQL является одной из самых распространенных баз данных, которая может использоваться также и в связке с ASP.NET MVC. Для работы с MySQL нам нужен естественно сам MySQL Server, на котором будет находиться база данных. Кроме того, поскольку мы будем работать с C#, то на целевом компьютере должен быть установлен также MySQL Connector.NET 6.9.6. Но необязательно устанавливать раздельно, поскольку при установке сервера MySQL в последних версиях можно сразу установить и MySQL Connector.

Поскольку мы будем взаимодействовать с базой данных через Entity Framework, то соответственно добавим нужный пакет через NuGet. И также через NuGet добавим в проект еще один пакет, который называется MySql.Data.Entity :

MySql.Data.Entity в ASP.NET MVC 5

Вместе с этим пакетом в проект также будет установлен другой пакет — MySql.Data .

Затем в файле web.config определим подключение, которое будет использоваться:

В данном случае база данных будет называться mobiledb. При этом важно указать точные данные для параметра UserId и Password — соответственно логин и пароль для подключения к базе данных.

Далее добавим простенькую модель и контекст данных:

При создании контекста данных к нему надо применить атрибут DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration)) . В остальном особых различий при подключении к mysql по сравнению с MSSQL нет.

Например, пусть у нас есть два действия по добавлению и выводу объектов:

Добавим несколько объектов:

И затем с помощью дополнительных утилит, например, MySQL Workbench, можно уидеть созданную азу данных, ее структуру и получить с помощью запроса хранящиеся там объекты:

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

MySQL и C# — работаем с базой данных. Запросы SELECT

В видеоуроке рассмотрим работу с базой данных MySQL на примере SELECT-запросов из программы, написанной на языке программирования C#. В статье вы найдёте исходные коды примеров из видео.

В видео показано выполнение запросов выборки (SELECT) к БД с помощью C#. Рассказывается про получение, как одного значения из базы, так и нескольких столбцов и строк.

Исходный код примера с получением одного значения из базы с помощью метода ExecuteScalar():

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *