Nechaeff
Нечаев Андрей
персональная страница
РЕЗЮМЕ

РОДНОЙ ГОРОД
РАССКАЗОВО

САПР СТУДЕНТАМ
ПОСВЯЩАЕТСЯ

ПОЛЕЗНОСТИ

ВСЯКОСТИ

CCЫЛОЧКИ

 

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

Представляю краткую справочную информацию по использованию языка SQL в среде программирования Delphi.

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

Создание таблицы с помощью SQL запроса

Перед выполнением запроса должны быть определены следующие переменные строкового типа:
tbl - файл таблицы, например: 'c:\programs\delphi\sql\first.dbf';
fld1, fld2 - название создаваемых полей;
tp1, tp2 - типы создаваемых полей таблицы.
Приведенный ниже запрос создает таблицу состоящую из двух полей указанного типа:

with MyQuery do
begin
    Active:=False;
    SQL.Clear;
    SQL.Add('CREATE TABLE "'+tbl+'"');
    SQL.Add('('+fld1+' '+tp1+', '+'fld2'+' '+tp2+')');
    ExecSQL;
end;
Типы поля могут быть: int, float, char(10).

Добавление записи в таблицу

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

with MyQuery do
begin
    Active:=False;
    SQL.Clear;
    SQL.Add('INSERT INTO "'+Tbl+'"');
    SQL.Add('VALUES ('+val1+', '+val2+', "'+val3+'")');
    ExecSQL;
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:\programs\delphi\sql\first.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('DELETE');
    SQL.Add('FROM "'+Tbl+'"');
    SQL.Add('WHERE '+Fld+' = "'+Val+'"');
    ExecSQL;
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+'"');
    ExecSQL;
end;

Удачной работы!


Рекламный блок
 

Хостинг http://www.tamb.ru

Rambler's Top100 Рейтинг@Mail.ru группа КИПЕЛОВ - мой вЫбор!