|
Программирование >> Создание клиентов mysql
Естественно, в более сложных случаях необходимо создавать make-файл. Подключиться к серверу MySQL средствами библиотека QL-t-+ несложно: достаточно создать объект класса Connection. У этого класса четыре конструктора: Connection () ; Connection (bool te) ; Connection (const char *db, const char *host = , const char *user = , const char *passwd = , bool te = true) ; Connection (const char *db, const char *host, const char *user, const char *passwd, uint port, ray bool compress = 0, unsigned int connecttimeout = 60, bool te = true, cchar *socket name = , unsigned int client flag=0) ; В основном аргументы конструктора соответствуют аргументам функции mysql real cohnect () библиотеки языка С. Аргумент te определяет, будут ли генерироваться исключения. В листинга 1 показан текст минимального клиента. Эта программа подключается к базе данных test на узле localhost. Код очистки не нужен, так как деструктор класса Connectionсамостоятельно закрывает соединение. ttinclude <iostream> tinclude <iomanip> ttinclude <sqlplus.hh> in t argc, char *argv[]) { Подключение к серверу. Connection con( test , localhost , leon , ); return 0; Извлечение данных Подключившись к серверу баз данных, программа жна создать объект класса Query, с помощью которого будут постлаться запросы. Этот класс является потомком класса ream, но емуразрешается постлать лишь входные данные, а оператор не поддерживается. Чтобы направить запрос серверу, необходимо записать его в поток с помощью оператора и вызвать метод Query: : stor ) либо Query execute {). Первый из них возвращает таблицу результатов запроса. В листинге 22.2 показана простая программа, которая извлекает данные из таблицы user. Обратите внимание на то, что программа пытается подключиться к серверу от имени пользователя root с явно неправильным паролем. Если будете экспериментировать с этой программой, подставьте корректные значения имени пользователя и пароля. Извлечение данных 423 Обратите также внимание на использование итератора класса Result в цикле for. На каждом шаге цикла создается объект класса Row, который ведет себя как массив строк : : size () возвращает число полей записи. #include <iostreara> #include <iomanip> ttinclude <sqlplus.hh> int main(in gc, char *argv[]) { Подключение к серверу. Connection con(use exceptions); con.connect( mysql , localhost , root , passw ); Создание объекта запроса. Query query = con.query(); Отправка запроса. query SELECT User, Host FROM user ORDER BY 1,2 , Получение результатов запроса. Result res = query.store(); Отображение записей. Row row; cout.setf(ios::left); Result::iterator i; for eginO ; .end(); { row = *i; for (unsigned int j=0; j < row. size (); j++) { cout [ row[j] ] ; cout endl; return 0; catch { cerr Error: return -1; er.error endl; Изменение данных Мето гу: : execute) предназначен для выполнение осов, которые не возвращают результаты в виде наборов записей. С помощью метода Connection: : affected rowM) можно узнать число добавленных, удаленных или обновленных записей (листинг 22.3). #include <iostream> #include <iomanip> ttinclude <sqlplus.hh> int main(int argc, char *argv[]) i Подключение к серверу. Connection con(use exceptions); con.connect( test , localhost , leon , ); Создание объекта запроса. Query query = con.queryO; Создание таблицы. query CREATE TABLE IF NOT EXISTS testapi ( ID.INT(11) NOT NULLAUTO INCREMENT, Name VARCHAR (64) , PRIMARY KEY (ID) ) ; query.execute(RESET QUERY); Вставка записей. const char *names[] = { Leon , Vicky , Carl , Ricky , Nicki , Jeff , Bo , Tina , Joey }; uint num rows = sizeof(names)/sizeof(char *); Подготовка запроса. query INSERT INTO %0 (Name) VALUES (%lq) ; query.parse(); for (int i=0 i rows; { Выполнение запроса. query.execute( testapi , names[i]); cout con.affected rows{)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |