Space Base Space Base
+7 928 008-80-89
ru
  • en
  • es
  • Главная
  • Услуги
  • Портфолио
  • Библиотека
  • Контакты
  • Главная
  • Услуги
  • Портфолио
  • Библиотека
  • Контакты
  1. Библиотека
  2. Delphi
  3. Запросы на выборку из БД в Delphi с использованием компонента ADOQuery
logo

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

20.04.2015

В этой статье рассмотрим задачу выборки записей из БД, применив компонент 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; // переход к предыдущей записи

Другие материалы:

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


Функция RemoveDir в Delphi, описание и примеры


Копирование, удаление, перемещение, переименование и проверка на наличие файла в Delphi


Написать комментарий

Комментарии

В комментариях запрещено публиковать рекламные материалы. Все сообщения оправляются на модерацию и будут опубликованы, если не нарушают правил сайта после проверки.


коммент.

avatar

Антон Сенников

- 16 ноября 2020, 13:19 ↓
Спасибо за ваше замечание, Олег.
В статье приведен простейший пример реализации поставленной задачи. Ваше дополнение несомненно позволит программисту выбрать более подходящее решение для своих задач.
avatar

Олег

- 12 ноября 2020, 10:39 ↓
ADOQ.SQL.Add(' where ID = @pID');
ADOQ.Parameters.ParseSQL(ADOQ.SQL.Text, True);
ADOQ.Parameters.ParamByName('pID').Value := Value

неведомы?

Разработка сайтов

Корпоративный сайт
Интернет-магазин
Лендинг - одностраничный сайт
Сайт-визитка
Сайт-портфолио

Проектирование

Прототип, UX-дизайн

Дизайн

UI-дизайн
Логотип

+54 911 2801-4950

info@space-base.net
+7 928 008-80-89

Web-сайты для успешного бизнеса

Web-сайты для успешного бизнеса

Главная Услуги Портфолио События Библиотека Контакты
+7 928 008-80-89 Меню
Политика в отношении обработки персональных данных © Copyright 2014 - | Space-Base

Лучшее время начать свой проект - Сейчас!

Выбраны опции:

Отправить сообщение на:

Telegram WhatsApp

Отправляя сообщение, вы даете свое согласие на
обработку песональных данных