→ Пошук по сайту       Увійти / Зареєструватися
Знання Технология ADO в Delphi Компоненты Delphi для поддержки ADO

Компонент TADOCommand

Этот компонент предназначен, в основном, для реализации SQL-запросов, не возвращающих никаких данных (подмножество Data Definition Language - язык определения данных языка структурированных запросов SQL). К предложениям DDL относятся практически все, которые не начинаются зарезервированным словом select.

Замечание. Хотя конкретная реализация транслятора SQL зависит от выбранного провайдера, однако в целом компоненты ADO при реализации этого языка следуют промышленному стандарту SQL-92.

Исполнение подобного рода запросов идет несколько иначе, чем запросов select. В BDE-ориентированных компонентах TQuery для реализации запросов select используется метод Open (или свойство Active), в то время как DDL запросы выполняются методом ExecSQL. В ADO для этих целей выделен специальный компонент. Хотя, как мы увидим дальше, он способен при некоторых обстоятельствах возвращать наборы данных, а компонент TADOQuery имеет в своем составе метод ExecSQL, позволяющий ему выполнять DDL запросы. Иными словами, одни и те же запросы в рамках ADO можно выполнять с помощью двух разных компонентов - как TADOCommand, так и TADOQuery.

Замечание. На самом деле - даже трех: рассмотренный выше связной компонент TAdoConnection также способен выполнять команду. Например:

procedure TForml.ButtonlClick(Sender: TObject);
begin
  AdoConnectionl.ConnectionString :=
    ‘Provider=Microsoft.Jet.OLEDB.4.0;'+
    'Data Source=C:DATAdbdemos.mdb’; 
  AdoConnectionl.Connected := True; 
  AdoDataSetl.RecordSet := AdoConnectionl.Execute ('SELECT * FROM CUSTOMER’)
end;

Текст исполняемой команды хранится в свойстве CommandText компонента. Компонент способен за один раз исполнять одну и только одну команду. Особенностью TADOCommand является специализированный текстовый редактор, с помощью которого можно сформировать команду. Этот редактор (рис.1) вызывается после щелчка по кнопке в строке свойства CommandText Инспектора Объектов.

Все поле редактора поделено на три части. В левой верхней части отображается список таблиц БД, с которой связан компонент, в нижней левой - список полей для выделенной таблицы, всю остальную часть занимает собственно текстовый редактор. Справочные окна в левой части лишь облегчают набор текста, который, в основном, формируется вручную в правом поле. Например, чтобы набрать указанное на рисунке предложение, необходимо вручную ввести слово update, затем щелкнуть по строке customer и нажать кнопку Add Table to SQL, затем вновь вручную ввести SET, щелкнуть по Company, нажать Add Field to SQL и т.д.

Как уже говорилось, компонент TADOCommand способен возвращать записи. Для этого в него включены целых три реализации метода Execute, два из которых как раз и предназначены для создания наборов записей. Использование возвращаемого НД возможно с помощью компонента-посредника TADODataSet по следующей схеме:

AdoDataSetl.RecordSet := AdoCommandl.Execute;

Для создания НД множество ExecuteOptions не должно содержать eoExecuteNo-Records.


Рис.1. Редактор команды компонента TADOCommand

Свойства
Свойство Назначение
property CommandObject: _Command; Содержит ссылку на базовый командный объект ADO.
property CommandText: WideString; Содержит текст исполняемой команды.
property CommandTimeout: integer; Определяет предельное время выполнения команды (в секундах). Умалчиваемое значение равно 30.
type TCommandType = (cmdUnknown, cmdText, cmdTable, cmdS toredProc, cmdFile, cmdTableDirect);
property CommandType: TCommandType;
Определяет тип исполняемой команды: cmdUnknown - неизвестный тип; cmdText-команда представляет собой текст или имя исполняемой процедуры; cmdTable - команда есть имя таблицы; cmdStoredProc - команда есть имя хранимой процедуры; cmdFile - команда есть имя файла, откуда берется набор данных; cmdTableDirect- команда возвращает все содержимое таблицы.
property Connection: TADQConnection; Содержит ссылку на связной компонент.
property ConnectionString: WideString; Содержит связную строку.
Type TExecuteOption = (eoAsync-Execute, eoAsyncFetch, eoAsyncFetch- NonBlocking, eoExecuteNoRecords);
TExecuteOptions = set of TExecuteOption; property Execute-Options: TExecuteOptions;
Уточняет способ выполнения команды: eoAsyncExecute - выполняется асинхронно; eoAsyncFetch - выполняется асинхронно после наполнения кэша; eoAsyncFetchNonBlocking выполнение происходит без блокирования потока; eoExecuteNoRecords – команда отвергает любые возвращаемые данные.
property ParamCheck: Boolean; Содержит True, если список параметров команды должен обновляться при любом изменении текста команды.
Property Parameters: TParameters; Открывает доступ к параметрам команды.
Property Prepared: WordBool; Если содержит True, исполнение команды предварительно готовится.
Property Properties: Properties; Используется для непосредственного доступа к свойствам базового командного ADO-объекта.
type TObjectState = (stClosed, stOpen, stConnecting, stExecuting, stretching); TObjectStates = set of TObjectState; property States: TObjectStates; Указывает текущее состояние компонента: stClosed - компонент закрыт и не связан с данными; stOpen - компонент открыт, но не выполняет команду; stConnecting компонент связан с набором данных; stExecuting - компонент выполняет команду; stFetching - компонент наполняет набор данных.

Методы
Метод Назначение
procedure Assign(Source: TPersistent); override; Копирует основные свойства компонента Source в свойства текущего компонента. Копируются; Connection; CommandText; CommandTimeout; CommandType; Prepared; Parameters.
Procedure Cancel; Прекращает выполнение асинхронной команды.
TExecuteOption = (eoAsyncExecute, eoAsyncFetch, eoAsyncFetchNonBlock-ing, eoExecuteNoRecords) ; TExecuteOptions = set of TExecuteOption;
function Execute: _RecordSet; overload;
function Execute(const Parameters: OleVariant) : JRecordset; overload
function Execute(var RecordsAffected Integer; var Parameters: OleVariant; ExecuteOptions: TExecuteOptions = []): RecordSet; overload;
Выполняет команду. _RecordSet - возвращаемый набор записей, если команда создает этот набор; Parameters - набор параметров, необходимых для выполнения команды; RecordsAffected - содержит количество возвращенных записей; ExecuteOptions - уточняющие параметры: eoAsyncExecute - команда выполняется асинхронно; eoAsyncFetch - после заполнения кэша оставшиеся записи формируются асинхронно; eoAsyncFetchNonBlocking - команда выполняется без блокирования потока; eoExecuteNoRecords - команда не должна возвращать записи.
загрузка...
Сторінки, близькі за змістом