Команда ADO
Для выполнения запросов к источнику данных любой компонент ADO инкапсулирует специальный объект команды ADO.
При использовании компонентов-потомков класса TCustomADODataSet обычно нет необходимости применять объект команды напрямую. И хотя все реальное взаимодействие объекта набора данных ADO с источником данных осуществляется через объект команды, настройка и выполнение команды скрыты в свойствах и методах компонентов ADO.
Тем не менее в классе TCustomADODataSet доступ к объекту команды можно получить при помощи свойства:
property Command: TADOCommand;
Примечание
При необходимости выполнить команду ADO, не связанную с конкретным набором данных, разработчик может использовать отдельный компонент TADOCommand, также расположенный на странице ADO Палитры компонентов.
Тип команды задается свойством:
type TCommandType = (cmdUnknown, cmdText, cmdTable, cmdStoredProc, cmdFile, cmdTableDirect); property CommandType: TCommandType;
Где:
- cmdunknown – тип команды неизвестен и будет определен источником данных;
- cmdText – текстовая команда, интерпретируемая источником данных (например запрос SQL); текст должен быть составлен с учетом правил для конкретного источника данных;
- cmdTable – команда на получение набора данных таблицы из хранилища данных;
- cmdstoredProc – команда на выполнение хранимой процедуры;
- cmdFile – команда на получение набора данных, сохраненного в файле в формате, используемым конкретным источником данных;
- cmdTableoirect – команда на получение набора данных таблицы напрямую, например из файла таблицы.
Текст команды, представленный свойством:
property CommandText: WideString;
…обязательно должен быть согласован с ее типом.
Для ограничения времени ожидания выполнения команды используется свойство:
property CommandTimeout: Integer;
В компонентах наборов данных ADO команды выполняется при выполнении следующих операций:
- открытие и закрытие набора данных;
- выполнение запросов и хранимых процедур;
- обновление набора данных;
- сохранение изменений;
- групповые операции.
Разработчик может повлиять на способ выполнения команды. Для этого он может изменить свойство:
type TExecuteOption = (eoAsyncExecute, eoAsyncFetch, eoAsyncFetchNonBlocking, eoExecuteNoRecords); TExecuteOptions = set of TExecuteOption; property ExecuteOptions: TExecuteOptions;
Где:
- eoAsyncExecute – асинхронное выполнение команды;
- eoAsyncFetch – асинхронное выполнение команды на обновление набора данных;
- eoAsyncFetchNonBlocking – асинхронное выполнение команды на обновление набора данных без установки блокировки;
- eoExecuteNoRecords – выполнение команды не требует возвращения набора данных.