Программирование >>  Создание клиентов mysql 

1 ... 133 134 135 [ 136 ] 137 138 139 ... 201


Естественно, в более сложных случаях необходимо создавать 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{)



1 ... 133 134 135 [ 136 ] 137 138 139 ... 201

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика