Использование языка структурированных запросов в Delphi

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

В Delphi: TQuery

Если вы собираетесь использовать SQL в своих приложениях, вы хорошо ознакомитесь с TQuery компонент. Delphi позволяет вашим приложениям напрямую использовать синтаксис SQL через компонент TQuery для доступа к данным из таблиц Paradox и dBase (с использованием локального SQL - подмножество стандарта SQL ANSI), базы данных на локальном сервере InterBase и базы данных на удаленной базе данных сервера.
Delphi также поддерживает гетерогенные запросы к нескольким типам серверов или таблиц (например, данные из таблицы Oracle и таблицы Paradox). В TQuery есть свойство, называемое

instagram viewer
SQL, который используется для хранения оператора SQL.

TQuery инкапсулирует один или несколько операторов SQL, выполняет их и предоставляет методы, с помощью которых мы можем манипулировать результатами. Запросы можно разделить на две категории: те, которые производят наборы результатов (такие как ВЫБРАТЬ заявление), а те, которые этого не делают (например, ОБНОВИТЬили ВСТАВИТЬ заявление). Используйте TQuery. Открыть, чтобы выполнить запрос, который производит набор результатов; используйте TQuery. ExecSQL для выполнения запросов, которые не производят наборы результатов.

Операторы SQL могут быть статический или динамическийто есть они могут быть установлены во время разработки или включать параметры (TQuery. Params) которые меняются во время выполнения. Использование параметризованных запросов очень гибко, потому что вы можете изменять представление пользователя и доступ к данным на лету во время выполнения.

Все исполняемые операторы SQL должны быть подготовлены до их выполнения. Результатом подготовки является исполняемая или рабочая форма выписки. Метод подготовки оператора SQL и сохранение его операционной формы отличают статический SQL от динамического SQL. Во время разработки запрос готовится и выполняется автоматически при установке запрос Активное свойство компонента в True. Во время выполнения запрос готовится с вызовом Prepare и выполняется, когда приложение вызывает методы Open или ExecSQL компонента.

TQuery может возвращать два вида наборов результатов: "прямой эфир«как и в случае с компонентом TTable (пользователи могут редактировать данные с помощью элементов управления данными, и когда происходит вызов Post, изменения отправляются в базу данных)»только для чтения"только для отображения. Чтобы запросить живой набор результатов, установите для свойства запроса RequestLive значение True и учтите, что оператор SQL должен удовлетворять некоторым конкретным требованиям (без ORDER BY, SUM, AVG и т. Д.).

Запрос ведет себя во многих отношениях очень похоже на фильтр таблиц, и в некоторых отношениях запрос даже более мощный, чем фильтр, потому что он позволяет вам получить доступ к:

  • более одной таблицы за раз («соединение» в SQL)
  • указанное подмножество строк и столбцов из базовой таблицы (таблиц), а не всегда возвращать их все

Простой пример

Теперь давайте посмотрим на SQL в действии. Хотя мы могли бы использовать мастер форм базы данных для создания некоторых примеров SQL для этого примера, мы сделаем это вручную, шаг за шагом:

1. Поместите компоненты TQuery, TDataSource, TDBGrid, TEdit и TButton в основную форму.
2. Установите для свойства DataSet компонента TDataSource значение Query1.
3. Установите для свойства DataSource компонента TDBGrid значение DataSource1.
4. Установите для свойства DatabaseName компонента TQuery значение DBDEMOS.
5. Дважды щелкните на свойстве SQL TQuery, чтобы назначить ему оператор SQL.
6. Чтобы сетка отображала данные во время разработки, измените свойство Active компонента TQuery на True.
Сетка отображает данные из таблицы Employee.db в трех столбцах (FirstName, LastName, Salary), даже если Employee.db имеет 7 полей, и набор результатов ограничен теми записями, где начинается FirstName с 'R'.

7. Теперь назначьте следующий код событию OnClick для Button1.

процедура TForm1.Button1Click (Отправитель: TObject); начать
Query1.Close;{закрыть запрос}// назначаем новое выражение SQL
Query1.SQL.Clear; Query1.SQL.Add ('Выберите EmpNo, FirstName, LastName'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Salary>' + Edit1.Text); Query1.RequestLive: = true; Query1.Open; {открытый запрос + отображение данных}конец;

8. Запустите ваше приложение. Когда вы нажимаете кнопку (если в редакторе 1 указано действительное значение валюты), в сетке будет отображаться Поля EmpNo, FirstName и LastName для всех записей, где Salary больше указанной валюты значение.

В этом примере мы создали простую статическую инструкцию SQL с набором живых результатов (мы не изменили ни одну из отображаемых записей) только для целей отображения.

instagram story viewer