Интерфейсы ISQLCommand и ISQLCursor
Интерфейс ISQLCommand обеспечивает функционирование запроса dbExpress. Компоненты dbExpress, работающие с наборами данных, используют его для реализации своих методов.
Параметры запроса устанавливаются методом:
function setParameter(ulParameter: Word; ulChildPos: Word; eParamType: TSTMTParamType; uLogType: Word; uSubType: Word; iPrecision: Integer; iScale: Integer; Length: LongWord; pBuffer: Pointer; llnd: Integer): SQLResult; stdcall;
Где ulParameter – порядковый номер параметра; если параметр является дочерним для сложных типов данных, ulchildPos задает его порядковый номер; eParamType задает тип параметра (входной, выходной, смешанный); uLogType – тип данных параметра; uSubType – вспомогательный параметр типа данных; iscale – максимальный размер значения в байтах; iPrecision – максимальная точность типа данных; Length – размер буфера; pBuffer – буфер, содержащий значение параметра; lInd – флаг, определяющий, может ли параметр иметь нулевое значение.
Для каждого параметра метод вызывается снова. Информацию о параметре можно получить, используя метод:
function getParameter(ParameterNumber: Word; ulChildPos: Word; Value: Pointer; Length: Integer; var IsBlank: Integer): SQLResult; stdcall;
Где ParameterNumber – порядковый номер параметра; если параметр является дочерним для сложных типов данных, ulchildPos задает его порядковый номер; value – указатель на буфер значения параметра; Length – размер буфера; isBlank – признак незаполненного параметра.
Метод:
function prepare(SQL: PChar; ParamCount: Word): SQLResult; stdcall;
…готовит запрос к выполнению с учетом значений параметров. Выполнение запроса осуществляется методом:
function execute(var Cursor: ISQLCursor): SQLResult; stdcall;
…который возвращает в параметре интерфейс курсора, если запрос выполнен. Или метод:
function executelmmediate(SQL: PChar; var Cursor: ISQLCursor): SQLResult; stdcall;
…который выполняет запрос, не требующий подготовки (не имеющий параметров). Он также возвращает в параметре cursor готовый интерфейс курсора, если запрос выполнен успешно. Текст запроса определяется параметром SQL.
И метод:
function getNextCursor(var Cursor: ISQLCursor): SQLResult; stdcall;
…определяет в параметре Cursor курсор следующего набора данных, если выполнялась хранимая процедура, которая возвращает несколько наборов данных.
Интерфейс ISQLCommand используется компонентом TCustomSQLDataSet и недоступен потомкам.
Интерфейс ISQLCursor
Интерфейс ISQLCursor обладает совокупностью методов, которые помогут получить информацию о полях курсора, а также значения этих полей. Все эти методы имеют одинаковое представление. Для получения нужной информации необходимо задать порядковый номер поля в структуре курсора.
Метод:
function next: SQLResult; stdcall;
…обновляет курсор, занося в него информацию из следующей строки набора данных.
Интерфейс ISQLCursor используется компонентом TCustomSQLDataSet и недоступен потомкам.