NetSago
Вход
Войти

Как присоединиться?
Меню
Главная
События
 Заметки
Статьи
Теги
Поиск
О Проекте
Ссылки
Наше
RSS События по RSS
RSS Заметки по RSS
netsago NetSago
Популярное
Руководство по получению прибыли от Свободных и Открытых Проектов by Джон Эндрюс

Восстановление удаленных текстовых файлов в ФС ext3 by scamelscrud

Заметки — Работа с MySQL в C++.
Назад в Заметки

Работа с MySQL в C++.
n0xi0uzz



Теги: mysql cpp


Для работы с MySQL в C++ существует MySQL++ API.

Установка из исходников происходит следующим образом:
tar xzvf mysql++2.3.2.tar.gz
cd mysql++2.3.2
./configure
make
make install

При этом заголовочные файлы API установятся в /usr/local/include.

Прежде всего, надо подключить заголовочные файлы MySQL++ API вместе с другими заголовочными файлами и объявить пространство имен MySQL++:
#include <iostream>
#include <mysql++.h>
using namespace std;
using namespace mysqlpp;

Теперь напишем главную функцию программы. Начнем её с большого блока try, в котором будем отлавливать все ошибки и обрабатывать их в дальнейшем.
int main() {
try {

Теперь определим несколько переменных, которые будут хранить информации о сервере MySQL, к которому надо подключиться:
char db[] = "test";
char host[] = "localhost";
char user[] = "testuser";
char passwd[] = "secret";

Используя эти переменные, подключимся к серверу, используя MySQL++-класс Connection. Создадим новый объект Connection с именем c и проверим, произошло ли подключение. Если объект вернет значение true, подключение прошло успешно:

Connection c(db, host, user, passwd);
if(c) cout << "==> Connected";

Создадим другой объект с именем q класса Query и положим в него SQL выражение. Затем создадим объект класса Result с именем r и, используя метод store класса Query, сохраним результат в r.
Query q = c.query;
q << "SELECT * FROM testtable";
Result r = q.store();

Получив результаты в r, пройдемся по ним в цикле for, используя класс Row, и выведем их на экран. Но прежде, убедимся, что результат получен с помощью метода num_rows() объекта Result.
if(r.num_rows() > 0) {

Используя этот метод, можно также получить количество строк результата. Выводить результат будем в виде ассоциативного массива, обращаясь к данным столбцов по их именам, например: row["name"], где name — имя столбца той строки, к которой мы хотим получить доступ.
Row row;
for(int i = 0; i < r.num_rows(), row = r.at(i); i++) {
cout << "==> " << row["column1"] 
<< ", " << row["column2"] << endl;
}
} else {
// else r.num_rows() is 0
cout << "=> No results returned." << endl;
}

В конце обработаем исключение с помощью catch, в случае возникновения ошибки:
} catch (Exception& e) {
cout << "Error: " << e.what() << endl;
}


Полный исходный код примера;
Полную документацию по MySQL++ можно изучить здесь.
Язык
English/Английский
Поиск
Расширенный Поиск
Ошиблись?
Если вы обнаружили ошибку на сайте, пожалуйста, сообщите нам о ней.
Посчитали
17 / 1122
К нам сегодня зашел 171 робот. Они хотят убить всех человеков.

Зарегистрированных пользователей: 0
Онлайн: 0

Время генерации: 0.010 с
NetSago.v2.β © [2006;∞)  Neunica