Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

2004 г

MySQL: Руководство разработчика. Версия 1.0. 20 апреля 2004 г.

Алексей Паутов,
Все о MySQL на русском: http://www.botik.ru/~rldp/mysql.htm, ftp://ftp.botik.ru/rented/rldp/www/pub
Russian LDP: http://www.botik.ru/~rldp, ftp://ftp.botik.ru/rented/rldp

содержание

3.10 MyDAO: библиотека-оболочка для C++

Версия 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 и открытие базы данных. Свойства:

  • bool Connected;
    Connected равно true, если подключение к серверу MySQL работает.
  • MYSQL *DBase;
    DBase является указателем на структуру MYSQL. Это требуется, чтобы открыть набор результатов.

Методы:

  • void dbconnect::Connect(char *host, char *port, char *uname, char*pwd);
    Пытается соединиться с сервером MySQL, используя указанные параметры хоста, порта, имени пользователя и пароля. Если подключение успешно установлено, свойство Connected будет true.
  • void dbconnect::Disconnect();
    Разъединяет текущее подключение с сервером MySQL.
  • bool dbconnect::OpenDB(char *db);
    Открывает базу данных 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();

recordset class: Любое количество наборов результатов может быть создано из этого класса. Он имеет много свойств для простого манипулирования данными.

Свойства:

  • char RecSource[MAX_RECSRC_LEN];
    Источник записей, из которых данные должны обрабатываться. Это должна быть SQL-инструкция SELECT, возвращающая записи.
  • unsigned long int RecordCount;
    Число строк в открытом наборе результатов.
  • unsigned long int AffectedRows;
    Может использоваться только с Update, AddNew или Delete. Число строк фактически обработанных сервером.
  • bool EOR;
    Конец набора результатов. True, если Вы двигаетесь в последнюю строку.
  • bool BOR;
    Начало набора результатов. True, если Вы двигаетесь первую строку. Замечание: EOR и BOR вместе будут равны true, если RecordCount=0.

Методы:

  • void recordset::OpenRecordset(MYSQL *Structmysql, char *sql);
    Открывает набор результатов основанный на SQL-инструкции select.
  • void recordset::CloseRecordset();
    Закрывает набор результатов. Он должен быть закрыт, чтобы освободить память, используемую им.
  • void recordset::MoveNext();
    Перемещается в следующую строку набора результатов. Если уже достигнута последняя строка, в ней и останется.
  • void recordset::MovePrevious();
    Перемещается в предыдущую строку набора результатов. Если уже достигнута первая строка, в ней и останется.
  • void recordset::MoveFirst();
    Перемещается в первую строку набора результатов.
  • void recordset::MoveLast();
    Перемещается в последнюю строку набора результатов.
  • char* recordset::GetField(char *FName);
    Возвращает содержание поля FName.
  • void recordset::SetField(char *FName, char *Value);
    Устанавливает содержание поля FName в значение Value. Изменения будут отброшены, если после установки значения не используется метод Update/AddNew.
  • void recordset::Edit();
    Должен использоваться перед методами SetField и Update, иначе все изменения будет отброшены.
  • void recordset::AddNew();
    Используется, чтобы добавить новую строку в набор результатов. Для работы этого метода набор результатов должен быть основан на таблице. Метод Update должен использоваться после установки всех значений поля. Определение WHERE не должно использоваться в методе Update, если оно уже используется с методом AddNew. Свойство AffectedRows выдаст число добавленных строк.
  • void rercordset::Update(char *Where);
    Используется, чтобы редактировать или добавить строку вместе с методами Edit/AddNew. Определение WHERE не должно использоваться с AddNew.
  • void recordset::Delete(char *Where);
    Применяется, чтобы удалить строки из набора результатов.
  • void recordset::Refresh();
    Изменения, сделанные методом Update, невидимы, если метод Refresh не используется. Обновите набор результатов немедленно после Update.
  • char* recordset::GetFieldN(int FNum);
    Аналогично GetField, но вместо имени поля используется его код (номер).
  • void recordset::SetFieldN(int FNum, char *Value)
    Аналогично SetField, но вместо имени поля используется его код (номер).

Пример 1:

//   Продолжение примера из 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();
  }
}

Пример 2:

//   Добавление новой строки в таблицу заказчиков.
MySet.AddNew();
MySet.SetField("cs_id", "7");
MySet.SetField("name", "Satish");
MySet.SetField("city", "Pune");
MySet.Update("");               // where не используется!
MySet.Refresh();                // Сделаем изменения видимыми.

Пример 3:

//   Изменение имени заказчика.
MySet.Edit();
MySet.SetField("cs_id", "7");
MySet.SetField("name", "Suresh");
MySet.SetField("city", "Pune");
MySet.Update("or_id=7");        // where здесь необходимо использовать.
MySet.Refresh();                // Сделаем изменения видимыми.

Пример 4:

//   Удаление записи.
MySet.Delete("name='Suresh'");
MySet.Refresh();                // Сделаем изменения видимыми.

Пример 5:

//   Закроем набор результатов после употребления. Это ОБЯЗАТЕЛЬНО!
MySet.CloseRecordset();

Что еще надо сделать:

  • Лучший контроль ошибок
  • Методы поиска информации (FindFirst, FindNext, FindPrevious, FindLast)
  • Сделать графическое представление набора результатов

содержание       назад       вперед

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...