Учись программированию на C++ Builder бесплатно!

В технологии ADO есть компонент ADOCommand, являющийся реализацией объекта ADO Command в среде C++ Builder и выполняющий ряд команд, которые не возвращают результаты. К примеру, это могут быть SQL-операторы языка определения данных или хранимых процедур. Чтобы выполнить хранение процедуры и SQL-запросы, которые возвращают результаты в виде наборов данных, рекомендуется использовать компоненты доступа к данным:

  • ADODataSet.
  • ADOQuery.
  • ADOStoredProc.

Свойство CommandObject

Предоставляет прямой доступ к базовому объекту команды ADO Command и имеет тип _Command.

Свойство CommandText

Указывает тип команды и определяет свойство CommandType (компонент ADODataSet). Значения cmdFile и cmdTableDirect для свойства CommandType объекта ADOCommand являются недопустимыми и их применить невозможно.

Значение свойства CommandText типа WideString определяет команду и выполняется методом Execute. В качестве команды можно задать строку с SQL-оператором, имя таблицы или имя хранимой процедуры. В случае необходимости можно задать некоторые параметры свойством Parametrs.

Свойство States

Определяет текущее состояние компонента ADOCommand (объекта Command) и имеет тип TObjectstates со следующей структурой: 

enum TObjectState { stClosed, stOpen, stConnecting, stExecuting, stFetching };
typedef Set<TObjectState, stClosed, stFetching> TObjectStates;

Параметры States

  • stClosed – объект Command выключен и закрыто соединение к хранилищу данных;
  • stOpen – объект Command выключен, но соединен с хранилищем данных;
  • stConnecting – объект Command подключен к хранилищу данных;
  • stExecuting – объект Command выполняет команду;
  • stFetching – объект Command получает данные от хранилища данных.

Свойство ExecuteOptions

Определяет условия выполнения команды ADO и имеет тип TExecuteOptions со следующей структурой: 

enum TExecuteOption { eoAsyncExecute, eoAsyncFetch, eoAsyncFetchNonBlocking, eoExecuteNoRecords };
typedef Set<TExecuteOption, eoAsyncExecute, eoExecuteNoRecords> TExecuteOptions;

Параметры ExecuteOptions

  • eoAsyncExecute – асинхронное выполнение команды;
  • eoAsyncFetch – асинхронная передача данных;
  • eoAsyncFetchNonBlocking – асинхронная передача данных без блокировки потока;
  • eoExecuteNoRecords – выполнение команды ADO без возвращения данных.

Метод Execute

С помощью перегруженного метода Execute выполняются команды ADO, который имеет три версии с различными наборами параметров:

  • _di__Recordset __fastcall Executed(); – объявление метода для выполнения команды без параметров;
  • _di__Recordset __fastcall Execute(const OleVariant &Parameters); – объявление метода для выполнения команды с Parameters параметром;
  • _di__Recordset __fastcall Execute(int &RecordsAffected, const OleVariant &Parameters); – объявление метода для выполнения команды с RecordsAffected, который возвращает общее число обработанных записей одним запросом.

Структура типа _di__Recordset

typedef System::DelphiInterface< _Recordset > _di__Recordset;

При выполнении команды ADO создается набор данных, где метод Execute возвращает этот набор данных. Для доступа к набору данных необходимо использовать компонент ADODataSet. Код получения доступа:

ADODataSet1->Recordset = ADOCommand1->Execute();

При вызове метода Execute возвращаемый набор данных назначается свойству Recordset названого компонента.


Поиск по сайту