Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Универсальный доступ к данным

CuBook05

Для обеспечения универсального однонаправленного доступа к данным БД по технологии dbExpress служит компонент SQLDataSet. Он позволяет получать все записи из таблицы БД, производить выборку данных путем выполнения SQL-запросов или выполнять хранимые процедуры. Для определения типа выполняемых действий (с запросами, таблицами или хранимыми процедурами) свойству CommandType нужно установить соответственно одно из трех возможных значений:
  • сtQuery - в свойстве commandText указывается SQL-запрос
  • сtTable - в свойстве commandText указывается имя таблицы на сервере БД, при этом компонент автоматически генерирует SQL-запрос для получения всех записей для всех полей таблицы
  • ctstoredProc - в свойстве CommandText указывается имя хранимой процедуры
В случае выбора значения ctQuery текст SQL-запроса можно ввести в поле свойства CommandText с помощью Инспектора объектов или Редактора построения SQL-запроса CommandText Editor. В окне редактора в списке Tables доступны имена таблиц в базе данных, а в списке Fields имена полей выбранной таблицы, с помощью кнопок Add Table to SQL и Add Field to SQL можно добавить нужные таблицы и поля. При этом в поле SQL отображается автоматически формируемый SQL-запрос. После нажатия OK в окне редактора мы получаем нужное значение свойства CommandText. При выполнении приложения аналогичные действия для выполнения SQL-запроса можно задать так:
SQLDataSet1->CoinmandType = ctQuery;
SQLDataSet1->CornmandText = "select COUNTRY, CURRENCY from DEPARTMENT, DEPTJSTO, DEPARTMENT from COUNTRY";
SQLDataSet1->ExecSQL();
При выборе значения ctTable в свойстве CommandText указывается имя таблицы, например, так:
SQLDataSet1->CommandType = ctTable;
SQLDataSet1->CoinmandText = "COUNTRY";
SQLDataSet1->ExecSQL();
Для открытия набора данных нужно установить значение true свойству Active или использовать метод Open. Если же SQL-запрос или хранимая процедура не возвращают набор данных, для их выполнения используется метод:
virtual int __fastcall ExecSQL(bool ExecDirect = false);
Параметр ExecDirect определяет необходимость подготовки параметров перед выполнением инструкции. Если параметры запроса или процедуры существуют, параметр ExecDirect должен иметь значение false. Это означает, что их нужно подготовить. При необходимости сортировки данных используют инструкцию ORDER BY в случае варианта ctQuery, либо устанавливают с помощью редактора SortFields Editor значение свойства sortFieldNames в случае варианта ctTable. Для варианта ctStoredProc порядок сортировки определяется в хранимой процедуре.
 
При необходимости в SQL-запросе или в хранимой процедуре можно использовать параметры, позволяющие настраивать запрос или процедуру, не изменяя их код. Параметры задаются с помощью свойства params, которое является коллекцией объектов типа TParam. Свойство DataSource типа TDataSource компонента SQLDataSet позволяет связать два набора данных по схеме «мастер-детальный». Метод SetSchemaInfо компонента SQLDataSet позволяет получить метаданные (список таблиц на сервере, список системных таблиц, информация о хранимых процедурах, информация о полях таблицы, параметры хранимой процедуры).
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий