15 просмотров

Использование запросов Delphi с ADO

Зарко Гайич имеет опыт работы с SQL и практические знания систем баз данных, таких как MS SQL Server, Firebird, Interbase и Oracle. Он также владеет XML, DHTML и JavaScript.

Компонент TADOQuery предоставляет разработчикам Delphi возможность получать данные из одной или нескольких таблиц из базы данных ADO с помощью SQL.

Эти операторы SQL могут быть либо операторами DDL (язык определения данных), такими как CREATE TABLE, ALTER INDEX и т. д., либо они могут быть операторами DML (язык манипулирования данными), такими как SELECT, UPDATE и DELETE. Однако наиболее распространенным оператором является оператор SELECT, который создает представление, аналогичное представлению, доступному при использовании компонента Table.

Примечание: несмотря на то, что выполнение команд с помощью компонента ADOQuery возможно, ADOCommandКомпонент больше подходит для этой цели. Чаще всего он используется для выполнения команд DDL или для выполнения хранимой процедуры (даже если вы должны использоватьTADOStoredProc для таких задач), который не возвращает набор результатов.

SQL, используемый в компоненте ADOQuery, должен быть приемлем для используемого драйвера ADO. Другими словами, вы должны быть знакомы с различиями в написании SQL между, например, MS Access и MS SQL.

Как и при работе с компонентом ADOTable, доступ к данным в базе данных осуществляется с помощью соединения с хранилищем данных, установленного компонентом ADOQuery с помощью егоConnectionString свойство или через отдельный компонент ADOConnection, указанный в Связьимущество.

Чтобы сделать форму Delphi способной извлекать данные из базы данных Access с помощью компонента ADOQuery, просто поместите в нее все связанные компоненты доступа к данным и компоненты, поддерживающие данные, и создайте ссылку, как описано в предыдущих главах этого курса.Компоненты доступа к данным: DataSource, ADOConnection вместе с ADOQuery (вместо ADOTable) и один компонент, поддерживающий данные, такой как DBGrid, — это все, что нам нужно.
Как уже объяснялось, с помощью Инспектора объектов установите связь между этими компонентами следующим образом:

Выполнение SQL-запроса

Компонент TADOQuery не имеет ИмяТаблицысвойство, как это делает TADOTable. TADOQuery имеет свойство (TStrings), называемое SQL который используется для хранения оператора SQL. Вы можете установить значение свойства SQL с помощью инспектора объектов во время разработки или с помощью кода во время выполнения.

Во время разработки вызовите редактор свойств для свойства SQL, щелкнув кнопку с многоточием в инспекторе объектов. Введите следующую инструкцию SQL: «SELECT * FROM Authors».

Оператор SQL может быть выполнен одним из двух способов, в зависимости от типа оператора. Операторы языка определения данных обычно выполняются с ExecSQL метод. Например, чтобы удалить определенную запись из определенной таблицы, вы можете написать оператор DELETE DDL и выполнить запрос с помощью метода ExecSQL.
(Обычные) операторы SQL выполняются путем установки TADOQuery.Active собственность на Истинный или позвонив вОткрытым Метод (по сути тот же). Этот подход похож на получение данных таблицы с помощью компонента TADOTable.

Во время выполнения оператор SQL в свойстве SQL может использоваться как любой объект StringList:

Приведенный выше код во время выполнения закрывает набор данных, очищает строку SQL в свойстве SQL, назначает новую команду SQL и активирует набор данных, вызывая метод Open.

Обратите внимание, что явное создание постоянного списка объектов поля для компонента ADOQuery не имеет смысла. В следующий раз, когда вы вызовете метод Open, SQL может быть настолько другим, что весь набор имен файлов (и типов) может измениться.Конечно, это не так, если мы используем ADOQuery для выборки строк только из одной таблицы с постоянным набором полей, а результирующий набор зависит от части WHERE оператора SQL.

Динамические запросы

Одним из замечательных свойств компонентов TADOQuery является возможность Параметры имущество. Параметризованный запрос позволяет гибко выбирать строку/столбец с помощью параметра в предложении WHERE оператора SQL. Свойство Params допускает замену параметров в предопределенной инструкции SQL. Параметр — это заполнитель для значения в предложении WHERE, определяемый непосредственно перед открытием запроса. Чтобы указать параметр в запросе, используйте двоеточие (:) перед именем параметра.
Во время разработки используйте инспектор объектов, чтобы установить свойство SQL следующим образом:

Когда вы закроете окно редактора SQL, откройте окно «Параметры», щелкнув кнопку с многоточием в инспекторе объектов.

Параметр в предыдущем операторе SQL называетсятип приложения. Мы можем установить значения параметров в коллекции Params во время разработки через диалоговое окно «Параметры», но в большинстве случаев мы будем изменять параметры во время выполнения. Диалоговое окно «Параметры» можно использовать для указания типов данных и значений по умолчанию для параметров, используемых в запросе.

Во время выполнения параметры могут быть изменены, а запрос повторно выполнен для обновления данных. Чтобы выполнить параметризованный запрос, необходимо указать значение для каждого параметра до выполнения запроса. Чтобы изменить значение параметра, мы используем либо свойство Params, либо метод ParamByName. Например, с учетом оператора SQL, как указано выше, во время выполнения мы могли бы использовать следующий код:

Как и при работе с компонентом ADOTable, ADOQuery возвращает набор или записи из таблицы (или двух или более). Навигация по набору данных осуществляется с помощью того же набора методов, который описан в главе «За данными в наборах данных».

Навигация и редактирование запроса

В целом компонент ADOQuery не следует использовать при редактировании. Запросы на основе SQL в основном используются для целей отчетности. Если ваш запрос возвращает набор результатов, иногда возможно отредактировать возвращенный набор данных. Результирующий набор должен содержать записи из одной таблицы и не должен использовать какие-либо агрегатные функции SQL. Редактирование набора данных, возвращаемого ADOQuery, аналогично редактированию набора данных ADOTAble.

Пример

Чтобы увидеть некоторые действия ADOQuery, мы напишем небольшой пример. Давайте сделаем запрос, который можно использовать для выборки строк из различных таблиц в базе данных. Чтобы показать список всех таблиц в базе данных, мы можем использовать GetTableNamesметод ADOConnection составная часть. GetTableNames в событии OnCreate формы заполняет поле со списком именами таблиц, а кнопка используется для закрытия запроса и его повторного создания для извлечения записей из выбранной таблицы. Обработчики событий () должны выглядеть так:

Обратите внимание, что все это можно сделать с помощью ADOTable и его свойства TableName.

голоса
Рейтинг статьи
Статья в тему:  Что такое теория использования и удовлетворения? Определение и примеры
Ссылка на основную публикацию
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x