WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Версия v0.1 (19-Feb-2000). Автор: Satish (spitfire@pn3.vsnl.net.in).
Лицензия: Feel free to use/copy/modify/add bugs/find bugs, but keep
the author informed.
Это C++ библиотека для сервера MySQL. Разработчик данного пакета искал
библиотеку C++, которая может создавать и работать с Data Access Objects. Он
натолкнулся на программное обеспечение, написанное Roland Hanel (MySQL C++) и
Ed Carp (MyC). Но MyC написан на чистом C и не может создавать объект в
истинном смысле. Также это не может создавать и работать с несколькими
наборами результатов. На основе этих пакетов была написан пакет MyDAO ver 0.1.
dbconnect class: Один объект подключения должен быть создан. Это
ответственно за соединение с сервером MySQL и открытие базы данных. Свойства:
Методы:
Пример:
recordset class: Любое количество наборов результатов может быть создано
из этого класса. Он имеет много свойств для простого манипулирования данными.
Свойства:
Методы:
Пример 1:
Пример 2:
Пример 3:
Пример 4:
Пример 5:
Что еще надо сделать:
3.10 MyDAO: библиотека-оболочка для C++
Введение
Руководство программиста
Connected равно true, если подключение к серверу MySQL работает.
DBase является указателем на структуру MYSQL. Это требуется, чтобы открыть
набор результатов.
Пытается соединиться с сервером MySQL, используя указанные параметры хоста,
порта, имени пользователя и пароля. Если подключение успешно установлено,
свойство Connected будет true.
Разъединяет текущее подключение с сервером MySQL.
Открывает базу данных db. Если все в порядке, вернет true.
dbconnect MyConnect;
char host[]="localhost";
char port[]="3306";
char name[]="satish";
char pwd[]="";
char db[]="orders";
MyConnect.Connect(host, port, name, pwd);
if (MyConnect.Connected) cout << "Connected" << endl;
else
{
cout << "Connection failed" << endl;
return;
}
if (!MyConnect.OpenDB(db)) {
cout << "Can not open selected database" << endl;
return;
}
else
{
cout << "Opened datbase: " << db << endl;
// open recorset(s)...
// Manipulate data...
}
MyConnect.Disconnect();
Источник записей, из которых данные должны обрабатываться. Это должна быть
SQL-инструкция SELECT, возвращающая записи.
Число строк в открытом наборе результатов.
Может использоваться только с Update, AddNew или Delete. Число строк
фактически обработанных сервером.
Конец набора результатов. True, если Вы двигаетесь в последнюю строку.
Начало набора результатов. True, если Вы двигаетесь первую строку. Замечание:
EOR и BOR вместе будут равны true, если RecordCount=0.
Открывает набор результатов основанный на SQL-инструкции select.
Закрывает набор результатов. Он должен быть закрыт, чтобы освободить память,
используемую им.
Перемещается в следующую строку набора результатов. Если уже достигнута
последняя строка, в ней и останется.
Перемещается в предыдущую строку набора результатов. Если уже достигнута
первая строка, в ней и останется.
Перемещается в первую строку набора результатов.
Перемещается в последнюю строку набора результатов.
Возвращает содержание поля FName.
Устанавливает содержание поля FName в значение Value. Изменения будут
отброшены, если после установки значения не используется метод Update/AddNew.
Должен использоваться перед методами SetField и Update, иначе все
изменения будет отброшены.
Используется, чтобы добавить новую строку в набор результатов. Для работы
этого метода набор результатов должен быть основан на таблице. Метод Update
должен использоваться после установки всех значений поля. Определение WHERE
не должно использоваться в методе Update, если оно уже используется с методом
AddNew. Свойство AffectedRows выдаст число добавленных строк.
Используется, чтобы редактировать или добавить строку вместе с методами
Edit/AddNew. Определение WHERE не должно использоваться с AddNew.
Применяется, чтобы удалить строки из набора результатов.
Изменения, сделанные методом Update, невидимы, если метод Refresh не
используется. Обновите набор результатов немедленно после Update.
Аналогично GetField, но вместо имени поля используется его код (номер).
Аналогично SetField, но вместо имени поля используется его код (номер).
// Продолжение примера из dbconnect.
// Откроем таблицу заказчиков (customers) и распечатаем
// все записи из нее.
recordset MySet;
char sql[]="SELECT * FROM customers";
MySet.OpenRecordset(MyConnect.DBase, sql);
if (MySet.EOR && MySet.BOR){
cout << "No records found" << endl;
return;
}
else
{
// Show number of records
cout << "No. of records: " << MySet.RecordCount << endl;
// Show all records
while (!MySet.EOR)
{
cout << MySet.GetField("or_id") << "\t";
cout << MySet.GetField("customers") << "\t";
cout << MySet.GetField("city") << endl;
MySet.MoveNext();
}
}
// Добавление новой строки в таблицу заказчиков.
MySet.AddNew();
MySet.SetField("cs_id", "7");
MySet.SetField("name", "Satish");
MySet.SetField("city", "Pune");
MySet.Update(""); // where не используется!
MySet.Refresh(); // Сделаем изменения видимыми.
// Изменение имени заказчика.
MySet.Edit();
MySet.SetField("cs_id", "7");
MySet.SetField("name", "Suresh");
MySet.SetField("city", "Pune");
MySet.Update("or_id=7"); // where здесь необходимо использовать.
MySet.Refresh(); // Сделаем изменения видимыми.
// Удаление записи.
MySet.Delete("name='Suresh'");
MySet.Refresh(); // Сделаем изменения видимыми.
// Закроем набор результатов после употребления. Это ОБЯЗАТЕЛЬНО!
MySet.CloseRecordset();
Найди своих коллег! |