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

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

 

Технология Microsoft ActiveX Objects (ADO) представляет собой универсальный механизм доступа к различным источникам данных из приложений баз данных. Основу технологии ADO составляет использование набора интерфейсов общей модели объектов COM, описанных в спецификации OLE DB.

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

В системе программирования Delphi компоненты, используемые для создания приложений по технологии ADO, расположены на странице ADO Палитры компонентов:

- ADOConnection – ADO-соединение, используемое для установки соединения с ADO-источником данных и обеспечивает поддержку транзакций;

- ADOCommand – ADO-команды, используется для выполнения SQL-команд доступа к ADO-источнику данных без возвращения результирующего набора данных;

- ADODataSet – набор данных ADO, обеспечивает доступ к одной или более таблице ADO-источника данных и позволяет другим компонентам управлять этими данными, связываясьс компонентом ADOTable через компонент DataSource аналогично тому как используется компонент DataSet. Может использоваться в компонентах ADOTable, ADOQuery, ADOStoredProc;

- ADOTable – таблица ADO, обеспечивает доступ к одной таблице ADO-источника данных и позволяет другим компонентам управлять этими данными, связываясь с компонентом ADOTable через компонент DataSource:

- ADOQuery – запрос ADO, позволяет выполнять SQL-команды для получения информации из ADO-источника данных и позволяет другим компонентам управлять этими данными, связываясь с компонентом ADOQuery через компонент DataSource:

Компонент ADOConnection может использоваться как посредник между данными и другими компонентами ADO, что позволяет более гибко управлять соединением.

Возможен вариант использования других компонентов ADO, соединяясь с источником данных напрямую, для чего компоненты ADO имеют свойство ConnectionString, с помощью которого могут создавать свой собственный канал доступа к данным.

Рисунок 1. Схема доступа к данным по технологии ADO

Ход работы

1 Поместите компонент TADOConnection на форму. Настройка параметров соединения осуществляется в диалоге, открываемом двойным щелчком в строке ConnectionString свойства соответствующего компонента доступа к данным в окне Инспектора объектов.

 

2 При установке переключателя Use Data Link File можно выбрать из списка или найти (после нажатия кнопки Browse) файл связи с данными.udl. По существу файлы связи с данными играют ту же роль, что и псевдонимы при использовании BDE. Они позволяют разработчику не связывать откомпилированные приложения с точным расположением хранилища данных.

Для создания файла связи с данными создайте текстовый файл и измените разрешение на.udl.

При установке переключателя Use Connection String Выполняются действия по созданию строки соединения. Для продолжения выбранного варианта диалога нужно нажать кнопку Build. В результате открывается окно Data Link Propertis, содержащее 4 вкладки. С помощью вкладки Provider осуществляется выбор провайдера с учетом характера решаемой задачи. Выберите вариант Microsoft OLE DB Provider for SQL Server.

3 При нажатии на кнопку Next происходит переход на вкладку Connection.

- В пункте 1 выберите из списка EHOSERVER\Lab305;

- В пункте 2 – учетные сведения Windows NT;

- Далее выберите базу данных – Northwind;

- Проверьте подключение.

 

 

4 Поместите на форму следующие компоненты:

- ADODataSet

- DataSource

- ADOTable

- DBGrid

- DBNavigator

Компонент Свойство Значение
ADODataSet1 Connection ADOConnection1
ADOTable1 Connection ADOConnection1
DataSource11 DataSet ADOTable1
DBGrid1 DataSource DataSource1
DBNavigator1 DataSource DataSource1

5 Поместите на форму компоненты: два компонента ComboBox, Memo, 3 компонента Button, OpenDialog.

Напишите процедуры для компонентов:

Компонент Обработчик события Процедура
ComboBox1 OnChange adoconnection1.GetFieldNames(combobox1.Text, combobox2.items); adodataset1.Close; adotable1.Close; datasource1.DataSet:=adotable1; adotable1.TableName:=combobox1.Text; try adotable1.Open; except on e: Exception do begin Messagedlg(' Проверьте подключение , mtError, [mbOK], 0); adotable1.Close; end; end; combobox1.Text:=''; combobox2.Text:='';
  OnDropDown adoconnection1.Open; adoconnection1.GetTableNames(combobox1.Items);
ComboBox2 (Выбор) OnChange adodataset1.Close; adotable1.Close; datasource1.DataSet:=adodataset1; adoDataSet1.CommandText:='Select '+combobox2.Text+' From '+combobox1.Text; try adodataset1.Active:=true; except on e: Exception do begin Messagedlg(’Проверьте подключение’, mtError, [mbOK], 0); adodataset1.Close; end;
Button1 (Кнопка для выполнения SQL-команды) OnClick adodataset1.Close; adotable1.Close; datasource1.DataSet:=adodataset1; adoDataSet1.CommandText:=Memo1.Text; try adodataset1.Active:=true; except on e: Exception do begin Messagedlg(‘Неправильный синтаксис SQL-команды’, mtError, [mbOK], 0); adodataset1.Close; end; end;
Button2 (В том случае если используется файл связи с данными) OnClick if opendialog1.Execute then begin adoconnection1.ConnectionString:='FILE NAME='+opendialog1.FileName; adoconnection1.Provider:=opendialog1.FileName; adoconnection1.Open; end;
Button3 (В том случае если используется файл связи с данными) OnClick ShellExecute(Form1.Handle, nil,’Путь к файлу.udl', nil, nil, sw_shownormal);

Для компонента DBNavigator процедуры обработки событий будут прописаны автоматически.

6 Листинг программы:


procedure TForm1.BOpenSQLClick(Sender: TObject);

begin

adodataset1.Close;

adotable1.Close;

datasource1.DataSet:=adodataset1;

adoDataSet1.CommandText:=Memo1.Text;

try

adodataset1.Active:=true;

except on e: Exception do

begin

Messagedlg('Неправильный синтаксис SQL-команды', mtError, [mbOK], 0);

adodataset1.Close;

end;

end;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

if opendialog1.Execute then begin

adoconnection1.ConnectionString:='FILE NAME='+opendialog1.FileName;

adoconnection1.Provider:=opendialog1.FileName;

adoconnection1.Open;

end;

end;

 

procedure TForm1.BCloseClick(Sender: TObject);

begin

if (adodataset1.State=dsedit) or (adodataset1.State=dsinsert) then adodataset1.Post;

if (adotable1.State=dsedit) or (adotable1.State=dsinsert) then adotable1.Post;

adoconnection1.Connected:=false;

close;

end;

 

procedure TForm1.ComboBox1DropDown(Sender: TObject);

begin

adoconnection1.Open;

adoconnection1.GetTableNames(combobox1.Items);

end;

 

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

adoconnection1.GetFieldNames(combobox1.Text, combobox2.items);

adodataset1.Close;

adotable1.Close;

datasource1.DataSet:=adotable1;

adotable1.TableName:=combobox1.Text;

try

adotable1.Open;

except on e: Exception do

begin

Messagedlg('Проверьте соединение', mtError, [mbOK], 0);

adotable1.Close;

end;

end;

combobox1.Text:='';

combobox2.Text:='';

end;

 

procedure TForm1.N11Click(Sender: TObject);

begin

ShellExecute(Form1.Handle, nil, 'Путь к файлу связи.udl', nil, nil, sw_shownormal);

end;

 

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if (adoDAtaSet1.State=dsedit) or (adoDAtaSet1.State=dsinsert) then adoDAtaSet1.Post;

if (adotable1.State=dsedit) or (adotable1.State=dsinsert) then adotable1.Post;

adoconnection1.Close;

end;

 

procedure TForm1.ComboBox2Change(Sender: TObject);

begin

adodataset1.Close;

adotable1.Close;

datasource1.DataSet:=adodataset1;

adoDataSet1.CommandText:='Select '+combobox2.Text+' From '+combobox1.Text;

try

adodataset1.Active:=true;

except on e: Exception do

begin

Messagedlg('Проверьте соединение', mtError, [mbOK], 0);

adodataset1.Close;

end;

end;

combobox2.Text:='';

end;

end.


7 Оформить подробный отчет и сделать вывод по выполненной работе.

 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: