Библиотека программиста

20.04.2024 - Использование языка SQL в Delphi

Представляю краткую справочную информацию по использованию языка SQL в среде программирования Delphi. Для использования в программе команд языка SQL необходимо поместить на форму объект TQuery. Назовем его MyQuery. А поместив на форму объекты TDBGrid и TDataSource и связав все три объекта между собой, получим возможность видеть в объекте TDBGrid результаты SQL запросов.




Создание таблицы с помощью SQL запроса
Перед выполнением запроса должны быть определены следующие переменные строкового типа:

tbl - файл таблицы, например: 'c:programsdelphisqlfirst.dbf'; fld1, fld2 - название создаваемых полей; tp1, tp2 - типы создаваемых полей таблицы.

Приведенный ниже запрос создает таблицу состоящую из двух полей указанного типа:

Код
with MyQuery do
begin
Active:=False;
SQL.Clear;
SQL.Add('CREATE TABLE "'+tbl+'"');
SQL.Add('('+fld1+' '+tp1+', '+'fld2'+' '+tp2+')');
SQL;
end;

.
.
.
.
.
.
.
.
.
.
Типы поля могут быть: int, float, char(10).


Добавление записи в таблицу
Добавление записи в таблицу посредством SQL запроса выполняется следующим способом:

Код
with MyQuery do
begin
Active:=False;
SQL.Clear;
SQL.Add(' INTO "'+Tbl+'"');
SQL.Add('VALUES ('+val1+', '+val2+', "'+val3+'")');
SQL;
end;



Здесь val1, val2 - добавляемое значение целого или вещественного типа; val3 - добавляемое значение строкового типа.

Последовательность расположения добавляемых значений в тексте запроса важна и должна соответствовать порядку следования полей таблицы.


SQL запрос на выборку
Для выполнения простого SQL запроса на выборку всех записей из указанной таблицы достаточно следующего кода:

Код
with MyQuery do
begin
Active:=False;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM "'+Tbl+'"');
Active:=True;
end;



переменная tbl содержит название таблицы, а лучше - полный путь к таблице, например: 'c:programsdelphisqlfirst.dbf'. Свойство MyQuery.RecordCount содержит число записей, выбранных из таблицы SQL запросом.



Запрос SQL на выборку с условием
Переменная fld содержит название поля таблицы, а переменная val - значение этого поля. Результатом выполнения нижеследующего запроса являются все записи таблицы со значением val в поле fld.

Код
with MyQuery do
begin
Active:=False;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM "'+Tbl+'"');
SQL.Add('WHERE '+Fld+' = "'+Val+'"');
Active:=True;
end;

.
.
.
.
.
.
.
.
.
.
А если воспользоваться приведенным ниже кодом, то в результате получим все строки таблицы, содержимое поля fld которых содержит значение val.

Код
SQL.Add('WHERE '+Fld+' LIKE "%'+Val+'%"');




Запрос SQL для нахождения максимума или минимума
Программный код запроса:

Код
with MyQuery do
begin
Active:=False;
SQL.Clear;
SQL.Add('SELECT Max('+Fld+') as M');
SQL.Add('FROM "'+Tbl+'"');
Active:=True;
end;



Используя команду MyQuery.FieldByName('M').asInteger; можно получить значение максимума целого типа. Для нахождения минимума необходимо в запросе воспользоваться строкой SQL.Add('SELECT Min('+Fld+') as M');


Запрос SQL для удаления записей из таблицы
Для удаления записей из таблицы tbl значения поля fld которых равны val используется следующий код:

Код
with MyQuery do
begin
Active:=False;
SQL.Clear;
SQL.Add('');
SQL.Add('FROM "'+Tbl+'"');
SQL.Add('WHERE '+Fld+' = "'+Val+'"');
SQL;
end;




Запрос SQL для изменения записей в таблице
Принцип работы запроса аналогичен запросу на удаление, необходимо лишь указать updFld - обновляемое поле и updVal - новое значение для этого поля.
Пример запроса:

Код
with MyQuery do
begin
Active:=False;
SQL.Clear;
SQL.Add('UPDATE "'+Tbl+'"');
SQL.Add('SET '+UpdFld+' = "'+UpdVal+'"');
SQL.Add('WHERE '+Fld+' = "'+Val+'"');
SQL;
end;

Опубликовано на сайте: http://www.coders-library.ru
Прямая ссылка: http://www.coders-library.ru/index.php?name=news&op=view&id=55