СтатьиПрограммирование в Delphi

Запросы на выборку из БД в Delphi с использованием компонента ADOQuery

В этой статье рассмотрим задачу выборки записей из БД, применив компонент ADOQuery. Подключение и взаимодействие с базой данных уже рассмотрено в одной из предыдущих статей. Поэтому здесь на этом останавливаться не будем.

Для работы с запросами в Delphi по технологии ADO используется компонент ADOQuery. Что касается подключения компонента, работа с ним подобна работе с ADOTable. Ему так же необходимо указать ADOConnection, подключенный к БД (можно так же настроить свойство подключения к БД ConnectionString). Для отображения на форме данных ему так же нужен компонент DataSource, подключаемый к компонентам отображения и управления данными из закладки палитры Data Controls (DBGrid, DBEdit и другие).

В отличие от ADOTable, запрос не содержит свойств для выбора таблицы, которую он будет отображать. Вместо этого он имеет поле SQL, которое должно содержать текст SQL-запроса к БД для выбора необходимых данных.

Статический запрос

Для получения содержимого таблицы следует указать следующие поля ADOQuery:

Connection – выбрать из списка настроенное подключение к БД.

SQL – ввести текст любого SQL-запроса, например: "SELECT * FROM mytable".

Active – присвоить значение True.

Если при присвоении свойству Active, сведений об ошибках не было выведено, значит все выполнено правильно и далее можно пользоваться ADOQuery, как обычной таблицей для вывода его данных (вывод осуществляется аналогично таблице через компонент DataSourcе, например, в DBGrid).

Плюс запроса в том, что в нем можно сформировать нужную выборку сразу из нескольких таблиц. Здесь можно так же применить сортировку и группировку данных.

Динамическое изменение запроса во время исполнения программы

Если в процессе работы программы, текст SQL-запроса нужно переписывать, как, например, при указании условия выборки, то можно просто программно управлять режимом исполнения запроса и содержимым его поля SQL.

Для этого применяется следующий код:

MyADOQuery.Active := false; // отключаем запрос, если он был включен
MyADOQuery.SQL.Clear; // удаление предыдущего текста запроса

// новый запрос – код подставляется из поля Edit
mySQL := 'SELECT * FROM myTable WHERE id = ' + myEdit.text;

MyADOQuery.SQL.Add(mySQL); // добавление нового текста запроса
MyADOQuery.Active := True; // включение запроса

Программная работа с результатами запроса

Если результат запроса нужно не просто вывести, а выполнять с ним какую-то работу непосредственно в коде, то обратится к ним через свойство Fields. Например, код:

ShowMessage(MyADOQuery.Fields[0].AsString);

выведет во всплывающем окне содержимое первого поля текущей записи.

Fields[номер поля] – указывает номер столбца в сформированной запросом таблице. Самое первое будет нулевое.

AsString – указывает, что тип возвращаемого значение будет строковый. Аналогично можно указать AsInteger, чтобы получить числовое значение.

Перемещение по записям выполняется аналогично программному переходу в таблицах:

MyADOQuery.First; // переход к первой записи
MyADOQuery.Last; // переход к последней записи
MyADOQuery.Next; // переход к следующей записи
MyADOQuery.Prior; // переход к предыдущей записи


Комментарии

Имя:
Текст комментария:
* В комментариях запрещено публиковать рекламные объявления. Сообщения, содержащие ссылки на сторонние ресурсы добавляется в скрытом режиме. Они будут открыты, если не нарушают установленных правил, после проверки.
Защита от спам-роботов (* Обязателельно укажите ответ на простой вопрос ниже.)
Сколько ножек у трeхногого табурета? (цифра)