Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование БД в Delphi ВТиП.doc
Скачиваний:
53
Добавлен:
17.03.2016
Размер:
3.62 Mб
Скачать
      1. Компонент tadoCommand

Компонент TADOCommandпредназначен в основном для реализацииSQL-запросов, не возвращающих никаких данных. К ним относятся практически все запросы языкаDLL, т.е. запросы, которые не начинаются зарезервированным словомSELECT.

Примечание. Хотя конкретная реализация транслятораSQLзависит от выбранного провайдера, однако в целом компонентыADOследуют промышленному стандартуSQL92.

Исполнение запросов языка DLLвADOидет несколько иначе, чем запросовSELECT. ВBDEв компонентахTQueryдля реализации запросовSELECTиспользуется методOpen(или свойствоActive), в то время какDDL-запросы выполняются методомExecSQL. ВADOдляDDL-запросов выделен специальный компонентTADOCommand. Хотя, при некоторых обстоятельствах (см. ниже) компонентTADOCommandспособен возвращать наборы данных, а компонентTADOTableимеет в своем составе методExecSQL, позволяющий ему выполнятьDDL-запросы. Иными словами, одни и те же запросы в рамкахADOможно выполнять с помощью двух разных компонентовTADOCommandиTADOTable, вернее даже трех компонентов, поскольку рассмотренный выше связной компонент TADOConnection также способен выполнять команду, например:

procedure TForm1.Button1Click(Sender: TObject);

begin

ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'

+ 'Data Source=C:\DATA\dbdemos.mdb';

ADOConnection1.Connected := True;

ADODataSet1.Recordset := ADOConnection1.Execute('SELECT * FROM CUSTOMER')

end;

Текст исполняемой команды хранится в свойстве CommandText компонента TADOCommand. Компонент способен за один прием исполнять одну и только одну команду.

Особенностью компонента TADOCommand является специализированный текстовый редактор, с помощью которого можно сформировать команду. Этот редактор (рисунок 10.14) вызывается щелчком на кнопке с многоточием в строке свойства CommandText инспектора объектов.

Рисунок 7.71 –Редактор команды компонента TADOCommand

Все окно редактора поделено на три части. В левой верхней части окна отображается список таблиц БД, с которой связан компонент, а в нижней левой части — список полей, выделенной таблицы. Для выделенной таблицы, всю остальную часть занимает собственно текстовый Редактор. Справочные окна в левой части лишь облегчают набор текста, который в основном формируется вручную в правом поле. Например, необходимо вручную ввести слово SELECT, выделить в нижнем списке строку * и щелкнуть на кнопке Add Field to SQL. Затем вновь вручную вводится слово FROM, в верхнем списке выделяется таблица BOOKS, выполняется щелчок на кнопке Add Table to SQL и т. д.

Как уже упоминалось, компонент TADOCommand способен возвращать записи. Для этого в него включены целых три реализации метода Execute, две из которых как раз и предназначены для создания наборов записей. Использование возвращаемогоНДвозможно с помощью компонента-посредникаTADODataSetпо следующей схеме:

ADODataSet1.Recordset := ADOCommand1.Execute;

Для создания НДмножествоExecuteOptionsне должно содержать значенияeoExecuteNoRecords.

    1. Свойства, методы и события ado компонентов-наборов

      1. Общие свойства с bde-компонентами

В состав ADO-компонентов входят4компонента-набора:TADODataSet,TADOTable,TADOTableиTADOStoredProc. Как и аналогичныеBDE‑компоненты, они имеют общего родителя — абстрактный классTDataSet, и, следовательно, большую часть своих методов, свойств и событий они унаследовали от этого класса, разделяя, таким образом, их со своимиBDE‑аналогами (рисунок10.15).

TComponent

TDataSet

TCastomADODataSet TBDEDataSet

TDBDataSet

ADO-наборы BDE-наборы

Рисунок 10.15 - Фрагмент иерархии наследования ADO и BDE компонентов-наборов

Например, для доступа к данным ADO-компоненты используют те же свойства, что иBDE-компоненты. Следующие операторы аналогичны по функциональности (предполагается, что полеCompany— второе по счету в массивеFieldsи для него создан объектADOTable1Company):

Caption := ADOTable1.FieldValues['Company'];

Caption := ADOTable1['Company'];

Caption := ADOTable1.FieldByName('Company').AsString;

Caption := ADOTable1.Fields[1].Value;

Caption := ADOTable1Company.AsString;

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

Модификация данных и навигация по ним также не отличаются от описанных ранее для BDE-компонент:

ADOTable1.Edit;

ADOTable1Company.Value: = 'Новая компания';

ADOTable1.Post;

Или:

ADOTable1.Open;

while not ADOTable1.EOF do begin

ADOTable1.Next

end;

ADO-наборы, так же как BDE- наборы, визуализируют данные через компоненты-посредники TDataSource и компоненты вкладки Data Controls палитры компонентов Delphi.