Розділ 3. Арх і тектура та проектування компонентних

Скачать презентацию Розділ 3. Арх і тектура та проектування компонентних Скачать презентацию Розділ 3. Арх і тектура та проектування компонентних

lecture10-11_-_osnovi_tehnologі_ado.net.ppt

  • Размер: 1.5 Mегабайта
  • Количество слайдов: 73

Описание презентации Розділ 3. Арх і тектура та проектування компонентних по слайдам

Розділ 3. Арх і тектура та проектування компонентних систем Основи технології ADO. NETЛекция № 10 Розділ 3. Арх і тектура та проектування компонентних систем Основи технології ADO. NETЛекция №

 • ODBC API (Open Database Connectivity) ;  • RDO (Remote Data Objects) ; • ODBC API (Open Database Connectivity) ; • RDO (Remote Data Objects) ; • DAO ( Data Access Objects) ; • OLE DB ; • ADO (Active. X Data Objects) ; • ADO. NET ; Технології Microsoft для роботи з БД ODBC DAODAO RDORDO OLE DBADOADO ADO. NET

ODBC  (Open Database Connectivity) • API  доступу до БД • Ціль – один кодODBC (Open Database Connectivity) • API доступу до БД • Ціль – один код для різних БД • Використовує SQL у якості робочої мови • Побудований на наборі драйверів, що забезпечують доступ до конкретних СКБД ODBC DAODAO RDORDO OLE DBADOADO ADO. NET

 • DAO  надає модель об ’ є ктів для доступу до локальних БД ( • DAO надає модель об ’ є ктів для доступу до локальних БД ( ISAM джерела Fox. Pro, Paradox, Lotus 1 -2 -3 тощо ) або до баз даних SQL через Jet ( напряму або через ODBC ) • Тільки реляційні БД DAO ( Data Access Objects ) ODBC DAODAO RDORDO OLE DBADOADO ADO. NET

RDO ( Remote Data Objects ) • RDO надає доступ до реляційних БД через ODBC •RDO ( Remote Data Objects ) • RDO надає доступ до реляційних БД через ODBC • Створювався для того, щоб можна было обходитися без ODBC API • RDO – об ’ є ктний COM- і нтерфейс до ODBC API • Як і DAO, тільки реляційні БД ODBC DAODAO RDORDO OLE DBADOADO ADO. NET

OLE DB та ADO ODBC DAODAO RDORDO OLE DBADOADO ADO. NET • OLE  DB –OLE DB та ADO ODBC DAODAO RDORDO OLE DBADOADO ADO. NET • OLE DB – технологія з використанням COM — компонент – провайдерів БД; • ADO – технологія з використанням COM — компонент – провайдерів БД та класу Data. Set (відрізняється від Data. Set в ADO. NET );

Технологія ADO. NET • ADO. NET – набір класів,  інтерфейсів,  структур та перерахувань уТехнологія ADO. NET • ADO. NET – набір класів, інтерфейсів, структур та перерахувань у бібліотеці . NET , які надають доступ до реляційних джерел даних. • Основна відмінність ADO . NET від ADO – використання моделі постачальників даних замість загального набору об ’ єктів, що не залежать від джерел даних. ODBC DAODAO RDORDO OLE DBADOADO ADO. NET

Простори імен FCL System. Data System. Xml. System. Web Globalization. Diagnostics. Configuration. Collections Resources. Reflection. Net.Простори імен FCL System. Data System. Xml. System. Web Globalization. Diagnostics. Configuration. Collections Resources. Reflection. Net. IO Threading. Text. Service. Process. Security. Design. ADO SQLTypes. SQL XPath. XSLT Runtime Interop. Services Remoting Serialization. Configuration Session. State. Caching Security. Services Description Discovery Protocols UI Html. Controls Web. Controls System. Drawing Imaging. Drawing 2 D Text. Printing. System. Windows. Forms Design Component. Model

Провайдер данных Провайдер даних (data provider) – це набір класів ADO. NET, які дозволяють отримувати доступПровайдер данных Провайдер даних (data provider) – це набір класів ADO. NET, які дозволяють отримувати доступ до визначеної БД, виконувати команди SQL і витягувати дані. Будь-який провайдер складається з наступного набору класів: – Connection – забезпечує підключення до БД; – Command – виконує команди SQL або збережені процедури; – Data. Reader – надає доступний лише для однонаправле-ного читання набір записів, подключений до БД; – Data. Adapter – заповнює від ’ єднаний об ’ єкт Data. Set або Data. Table та оновлює його вміст. Назви класів провайдера включають префікс перед назвою типу класу. Наприклад : • Ole. Db — для провайдера Ole. Db ; • Sql — для провайдера Sql. Client.

Провайдери даних Microsoft ADO. NET Провайдери даних Простір імен Опис ODBC System. Data. Odbс Класи дляПровайдери даних Microsoft ADO. NET Провайдери даних Простір імен Опис ODBC System. Data. Odbс Класи для підключення до більшості драйверів ODBC, зокрема Odbc. Command , Odbc. Connection та Odbc. Data. Adapter. OLE DB System. Data. Ole. Db Класи для підключення до провайдера OLE DB, зокрема Ole. Db. Command , Ole. Db. Connection та Ole. Db. Data. Adapter. Microsoft SQ L Server System. Data. Sql. Cl i ent Класи для підключення до БД Microsoft SQL Server, у тому числі Sql. Db. Command , Sql. Db. Connection та Sql. Db. Data. Adapter. Oracle System. Data. Oracle. Client Класи для підключення до БД Oracle, зокрема Oracle. Command , Oracle. Connection та Oracle. Data. Adapter.

Архітектура ADO. NET Архітектура ADO. NET

Типи об ’ єктів ADO. NET • Об'єкти, засновані на з'єднанні – такі об'єкти провайдера даних,Типи об ’ єктів ADO. NET • Об’єкти, засновані на з’єднанні – такі об’єкти провайдера даних, як Connection , Command та Data. Reader. • Об’єкти, засновані на вмісті – ці об’єкти у дійсності лише «упаковують» дані – Data. Set , Data. Column , Data. Row , Data. Relation тощо.

Способи роботи з БД Приєднаний  або з підтримкою з'єднання  (Connected,  Forward-only, read-only )Способи роботи з БД Приєднаний або з підтримкою з’єднання (Connected, Forward-only, read-only ) : • Програма робить запит, читає результати і обробляє їх • Використовується курсор «Firehose» (брандспойт) • Використовується об’єкт Data. Reader Від’єднаний або з розривом з’єднання ( Disconnected ) : • Програма робить запит, читає і зберігає результати для обробки, від’єднується від БД • Виконується робота з даними (додавання, зміна, видалення) • Мінімізується час з’єднання з базою даних • Використовується об’єкт Data. Set

Об'єктна модель ADO. NET Об’єктна модель ADO. NET

Execute. Xxxx Використання класів ADO. NET Data Base SQL Server організаціїConnection. Data. Reader Data. Adapter Data.Execute. Xxxx Використання класів ADO. NET Data Base SQL Server організаціїConnection. Data. Reader Data. Adapter Data. Set. Command Fill Update, Insert, Delete Client Program Комп ’ ютер користувача. Execute. Reader Read Select Провайдер

Послідовність роботи з даними у приєднаному режимі • Установити з ‘ єднання з БД.  •Послідовність роботи з даними у приєднаному режимі • Установити з ‘ єднання з БД. • Виконати запит до БД. – Створити та виконати команди • Отримати результати команди. • Закрити з ‘ єднання з БД.

Клас Connection • виконує реальний обмін даними між БД та застосуванням • є частиною Data ProviderКлас Connection • виконує реальний обмін даними між БД та застосуванням • є частиною Data Provider • властивості – Connection. String – Connection. Timeout – Data. Base • методи – Open() – відкрити з ‘ єднання – Close() – закрити з ‘ єднання

Рядок з ’ єднання Рядок з'єднання  – це серія пар ім'я-значення,  розділених крапкою зРядок з ’ єднання Рядок з’єднання – це серія пар «ім’я-значення», розділених крапкою з комою (; ). Всі разом вони специфікують базову інформацію, необхідну для встановлення з’єднання. Формат рядка з’єднання : “ param 1 = val 1; param 2 = val 2; … param. N = val. N” – param – ім ’ я параметра рядка з’єднання – val – значення параметра

Основні параметри рядка з ’ єднання • Data Source= (local)\SQLEXPRESS ; – (local) – localhost –.Основні параметри рядка з ’ єднання • Data Source= (local)\SQLEXPRESS ; – (local) – localhost –. ( просто точка ) • Initial Catalog = ; • uid=; • р wd = ; • Integrated. Security = True; – True – SSPI – yes • Provider= … ( для ODBC та OLEDB) • ….

Приклади рядків з ’ єднання string connection. String = Data Source=localhost; Initial Catalog=Northwind;  + IntegratedПриклади рядків з ’ єднання string connection. String = «Data Source=localhost; Initial Catalog=Northwind; » + «Integrated Security=SSPI»; string connection. String = «Data Source=localhost; Initial Catalog=Northwind; » + «user id=sa; password=opensesame»; string connection. String = «Data Source=localhost; Initial Catalog=Sales; » + «user id=sa; password=; Provider=MSDAORA»; string connection. String = «Provider=Microsoft. Jet. OLEDB. 4. 0; » + @»Data Source=C: \Data. Sources\Northwind. mdb»;

Метод Sql. Connection con = new Sql. Connection( @Data Source=. \SQLEXPRESS 2012; Initial + Catalog=kurs; IntegratedМетод Sql. Connection con = new Sql. Connection( @»Data Source=. \SQLEXPRESS 2012; Initial» + «Catalog=kurs; Integrated Security=SSPI»); con. Open(); … con. Close(); База даних Програма Sql. Connection

Приклад використання об ’ єкта Connection // Створити об ’ єкт Connection.  string connection. StringПриклад використання об ’ єкта Connection // Створити об ’ єкт Connection. string connection. String = Web. Configuration. Manager. Connection. Strings[«Northwind»]. Connection. String; Sql. Connection con = new Sql. Connection(connection. String); try { // Відкрити з ’ єднання. con. Open(); lbl. Info. Text = «Server Version: » + con. Server. Version; lbl. Info. Text += » Connection Is: » + con. State. To. String(); } catch (Exception err) { // Обробка помилки з відображенням інформації. lbl. Info. Text = «Error reading the database. «; lbl. Info. Text += err. Message; } finally { con. Close(); lbl. Info. Text += » Now Connection Is: «; lbl. Info. Text += con. State. To. String(); }

Клас Command • Клас Command дозволяє виконувати дії з БД ( вибірку,  оновлення, доповнення, видалення,Клас Command • Клас Command дозволяє виконувати дії з БД ( вибірку, оновлення, доповнення, видалення, тощо ). • Властивості : – Command. Type : • Command. Type. Text — оператори SQL; • Command. Type. Table. Direct – робота з конкретною таблицею ; • Command. Type. Stored. Procedure – виклик збереженої у БД процедури. – Command. Text містить : • текст оператора SQL (для типу Command. Type. Text ) ; • ім ’ я таблиці (для Command. Type. Table. Direct ) ; • ім ’ я збереженої процедури з параметрами (для Command. Type. Stored. Procedure ) ; – Connection – посилання на відкрите з ’ єднання (об ’ єкт Connection ) ; – Parameters – колекція параметрів запиту.

Основні методи виконання Command – Execute. Reader ()  –  виконує оператор  SELECT ,Основні методи виконання Command – Execute. Reader () – виконує оператор SELECT , створює та повертає посилання на об ’ єкт Data. Reader , який містить результат виконання запиту. – Execute. Non. Query () – виконує оператори INSERT, DELETE, UPDATE на мові SQL (повертає кількість оброблених записів) – Execute. Scalar () – повертає перший рядок першого стовбця у результуючому наборі (використовуючи функції COUNT, AVG, MIN, MAX, SUM ) ;

Клас Sql. Command cmd = con. Create. Command(); cmd. Command. Text = “INSERT INTO Students(First. Name,Клас Sql. Command cmd = con. Create. Command(); cmd. Command. Text = “INSERT INTO Students(First. Name, Last. Name)” + “ VALUES(‘ Іван ’, ‘ Петров ’)”; cmd. Execute. Non. Query(); Sql. Command cmd = new Sql. Command(); cmd. Connection = con; cmd. Command. Type = Command. Type. Text; cmd. Command. Text = «SELECT * FROM Employees»; Sql. Command cmd = new Sql. Command(«SELECT * FROM Employees», con); Sql. Command cmd = new Sql. Command(«Get. Employees», con); cmd. Command. Type = Command. Type. Stored. Procedure;

Метод Execute. Reader() • Створює об ’ є кт Data. Reader та повертає посилання на нього.Метод Execute. Reader() • Створює об ’ є кт Data. Reader та повертає посилання на нього. • Текст команди повинен містити оператор Select або виклик збереженої процедури.

string connection. String = Web. Configuration. Manager. Connection. Strings[Northwind]. Connection. String;  Sql. Connection con =string connection. String = Web. Configuration. Manager. Connection. Strings[«Northwind»]. Connection. String; Sql. Connection con = new Sql. Connection(connection. String); string sql = «SELECT * FROM Employees»; Sql. Command cmd = new Sql. Command(sql, con); con. Open(); Sql. Data. Reader reader = cmd. Execute. Reader(); String. Builder html. Str = new String. Builder(«»); while (reader. Read()) { html. Str. Append(«

  • «); html. Str. Append(reader[«Title. Of. Courtesy»]); html. Str. Append(» «); html. Str. Append(reader. Get. String(1)); html. Str. Append(«, «); html. Str. Append(reader. Get. String(2)); html. Str. Append(» — employee from «); html. Str. Append(reader. Get. Date. Time(6). To. String(«d»)); html. Str. Append(«
  • «); } reader. Close(); con. Close(); Html. Content. Text = html. Str. To. String(); Приклад виклику методу Execute. Reader ()

    Клас Data. Reader • Об ’ є кти даного класу дозволяють виконувати лише читання даних зКлас Data. Reader • Об ’ є кти даного класу дозволяють виконувати лише читання даних з БД, отриманих за допомогою об ’ є кта Command , тільки в одному напрямку ( від початка до кінця ). • Одночасно об ’ є кт Rata. Reader на дає доступ тільки до одного запису вибірки. • Можна визначити значення поля у записі, використовуючи индексатор – dr[n] або dr[“ ім ’ я поля ”]

    Об ’ єкт Data. Reader • Для переходу до наступного запису вибірки використовується метод bool Read()Об ’ єкт Data. Reader • Для переходу до наступного запису вибірки використовується метод bool Read() : читає поточний запис та переміщує курсор на наступний запис. • Якщо метод Read повертає true , то наступний запис прочитано, інакше повертається false. • Для закінчення роботи з об ’ є ктом необхідно виконати виклик методу: – Close : закінчення роботи з даними в Data. Reader.

    Об ’ єкт Data. Reader • Метод Execute. Reader()  повертає посилання на об ’ єктОб ’ єкт Data. Reader • Метод Execute. Reader() повертає посилання на об ’ єкт Data. Reader • Об ’ єкт Data. Reader дозволяє послідовно читати записи з отриманої вибірки (запис за записом)Data. Reader Execute. Reader ()

    Отримання даних вибірки dr[i] або dr[“ і м ’ я ”] Data. Reader Read() Вибірка данихОтримання даних вибірки dr[i] або dr[“ і м ’ я ”] Data. Reader Read() Вибірка даних Одночасно у Data. Read зберігається один запис вибірки. При виклику метода Read() зчитується наступний запис.

    Приклад застосування Sql. Data. Reader Приклад застосування Sql. Data. Reader

    Читання записів за допомогою Data. Reader Поля (стовбці) поточного запису можна прочитати двома способами: 1. dt.Читання записів за допомогою Data. Reader Поля (стовбці) поточного запису можна прочитати двома способами: 1. dt. Reader[0] 2. dt. Reader[“Child. Id”] // Child. Id – ім ’ я поля запису При клад : string Results; while (dt. Reader. Read() == true) { Console. Write. Line(dt. Reader[“Child. Id”] + “ “ + t. Reader[“name”]; } Textbox 1. text=Results;

    Метод Execute. Non. Query() Дозволяє виконати такі команди: • команди корегування (повертає кількість змінених записів) •Метод Execute. Non. Query() Дозволяє виконати такі команди: • команди корегування (повертає кількість змінених записів) • INSERT ( INSERT INTO tbl (f 1, f 2, f 3) VALUES (‘xxx’, 1986, ‘yyy’) ) – UPDATE (UPDATE childs SET id = 27 WHERE year = 1997) – DELETE (DELETE FROM childs WHERE ID = 5) • інші команд и , які не повертають значень (результат -1) – CREATE DATABASE – CREATE TABL

    Приклад виклику метода Execute. Non. Query() Ole. Db. Command Comm = new Ole. Db. Command(); Comm.Приклад виклику метода Execute. Non. Query() Ole. Db. Command Comm = new Ole. Db. Command(); Comm. Connection = Conn; Command. Type = Command. Type. Text; Command. Text = «INSERT into Books(id, [year], author, name) » + «VALUES (33, 2006, ‘John’ , ‘ Programming’ )»; try { int rc = (int)Comm. Execute. Non. Query(); } catch (Ole. Db. Exception ex) { System. Console. Write. Line(ex. Message); }

    Метод Sql. Command. Execute. Scalar () cmd. Command. Text = “SELECT COUNT(Id) FROM Students”; int countМетод Sql. Command. Execute. Scalar () cmd. Command. Text = “SELECT COUNT(Id) FROM Students”; int count = (int)cmd. Execute. Scalar(); Console. Write. Line(“Count is: ” + count);

    Параметри запиту • У SQL запиті у  Command. Text  можна задавати змінні – параметри.Параметри запиту • У SQL запиті у Command. Text можна задавати змінні – параметри. • Параметри дозволяють міняти SQL запит без переписування його тексту. • Параметри використовуються при виклику збереженої процедури для передачі вхідних даних та отримання результатів. • Для Odbc поля параметра задаються символами «? » select Emp. Id, Title, First. Name, Last. Name from Employees where (First. Name = ? , Last. Name = ? ) • Для Ole. Db. Command та Sql. Command використовуються іменовані поля параметрів – @Xxxxx select Emp. Id, Title, First. Name, Last. Name from Employees where (First. Name = @First, Last. Name = @Last )

    Додавання параметрів • Клас xxx. Parameter для опису параметрів запиту – властивість Parameter. Name ; –Додавання параметрів • Клас xxx. Parameter для опису параметрів запиту – властивість Parameter. Name ; – властивість xxx Type ( наприклад, Sql. Db Type); – властивість Direction ( Parameter. Direction. Input ; Parameter. Direction. Out put ); – властивість Value. • В об ’ єкті Command є колекція параметрів (об ’ єктів Parameter ) Parameters. • Для використання параметра необхідно створити об ’ єкт Parameter та зберегти його у колекції Parameters. • Методи додавання – Add(parameter); – Add. With. Value( name, value );

    Приклад опису параметра string connection. String = Web. Configuration. Manager. Connection. Strings[Northwind]. Connection. String;  Sql.Приклад опису параметра string connection. String = Web. Configuration. Manager. Connection. Strings[«Northwind»]. Connection. String; Sql. Connection con = new Sql. Connection(connection. String); string sql = «SELECT Orders. Customer. ID, Orders. Order. ID, COUNT(Unit. Price) AS Items, ”+ «SUM(Unit. Price * Quantity) AS Total FROM Orders » + «INNER JOIN [Order Details] » + «ON Orders. Order. ID = [Order Details]. Order. ID » + «WHERE Orders. Customer. ID = @Cust. ID » + «GROUP BY Orders. Order. ID, Orders. Customer. ID»; Sql. Command cmd = new Sql. Command(sql, con); cmd. Parameters. Add(«@Cust. ID», txt. ID. Text); con. Open(); Sql. Data. Reader reader = cmd. Execute. Reader(); Grid. View 1. Data. Source = reader; Grid. View 1. Data. Bind(); reader. Close(); con. Close();

    Основи технології ADO. NET  (частина 2) Автономні дані ( disconnected ) Лекция № 11 Основи технології ADO. NET (частина 2) Автономні дані ( disconnected ) Лекция №

    Схема доступу до даних База даних Connection Update Застосування. Command Data. Adapter Одне значення Багато значеньСхема доступу до даних База даних Connection Update Застосування. Command Data. Adapter Одне значення Багато значень Data. Reader

    Сценарії, в яких Data. Set використовувати легше,  ніж Data. Reader :  • потрібен зручнийСценарії, в яких Data. Set використовувати легше, ніж Data. Reader : • потрібен зручний пакет для відправки даних іншому компоненту; • потрібен зручний формат файлу для серіалізації даних на диск; • потрібно організувати навігацію у двох напрямках по великому об’єму даних; • потрібно виконувати навігацію по декількох різних таблицях; • потрібно використовувати прив’язку даних до елементів керування користувацького інтерфейсу; • необхідно маніпулювати даними як XML; • необхідно виконувати пакетні оновлення через веб-службу.

    Класи Data. Set  містить дві важливі складові:  • колекцію з нуля або більше таблицьКласи Data. Set містить дві важливі складові: • колекцію з нуля або більше таблиць (властивість Tables ); • колекцію з нуля або більше відношень, які можна застосовувати для зв’язування таблиць між собою (властивість Relationships ).

    Методи Data. Set Метод Опис Get. Xml() та Get. Xml. Schema() Повертають рядок даних ( уМетоди Data. Set Метод Опис Get. Xml() та Get. Xml. Schema() Повертають рядок даних ( у розмітці XML) або інформацію схеми для Data. Set. Write. Xml() та Write. Xml. Schema() Зберігають дані та схеми, представлені Data. Set у файлі або потоці формату XML. Read. Xml() та Read. Xml. Schema() Створюють таблиці в Data. Set на основі існуючого XML — документа або документа схеми XML. Clear() Очищає всі дані таблиць. Сорy() Повертає точний дублікат Data. Set з тим же набором таблиць, відно шень і даних. Clone() Повертає Data. Set з тією ж структурою (таблицями та відно шеннями ), але без даних. Merge() Приймає інший Data. Set , як введення та об’єднує його з поточним Data. Set , додаючи нові таблиці і об’єднуючи дані в існуючих.

    Типізований Data. Set • ADO. NET підтримує типізований Data. Set.  • Перетворення типів при доступіТипізований Data. Set • ADO. NET підтримує типізований Data. Set. • Перетворення типів при доступі до результатів для нього не потрібні : string my. Book = ds. Books[0]. Name; • Насправді це зовсім інший клас, похідний від Data. Set , структура якого визначається XSD-файлом (схема XML), в якому, зокрема, описані імена таблиць і стовпців. • Структура даних повинна бути відома на період компіляції.

     • Обєкт Data. Set  можна редагувати на клієнтській машині:  редагувати записи, додавати або • Обєкт Data. Set можна редагувати на клієнтській машині: редагувати записи, додавати або видаляти Data. Row • Ці зміни потраплять до БД після застосування методу Data. Adapter. Update • Row. State – стан рядка даних Unchanged/Modified/Added/Deleted/Detached/ Модифікація та оновлення

    Об ’ єкт  Data. Relation • Об ’ єкт Data. Relation  представляє зв'язок міжОб ’ єкт Data. Relation • Об ’ єкт Data. Relation представляє зв’язок між двома полями різних таблиць • Набір Relation – властивість об’єкта Data. Set • Є можливість отримувати пов’язані записи за допомогою методів Get. Child. Rows та Get. Parent. Rows

    Клас Data. Adapter служить мостом між одним Data. Table в Data. Set та джерелом даних, включаєКлас Data. Adapter служить мостом між одним Data. Table в Data. Set та джерелом даних, включає всі доступні команди для виконання запитів та оновлення джерела даних. Ключов і методи: Метод Опис Fill() Додає Data. Table до Data. Set за рахунок виконання запиту в Select. Command. Fill. Schema() Додає Data. Table до Data. Set за рахунок виконання запиту в Select. Command і витягання тільки інформації про схему. Update() Перевіряє всі зміни в окремій Data. Table і застосовує пакет цих змін до джерела даних за допомогою виконання відповідних операцій Insert. Command , Update. Command та Delete. Command.

    Data. Reader vs. Data. Adapter • Data. Reader допускає швидке та ефективне односпрямова-не читання даних •Data. Reader vs. Data. Adapter • Data. Reader допускає швидке та ефективне односпрямова-не читання даних • Менш гнучкий, ніж Data. Adapter (не можна редагувати дані, не можна повернутися до прочитаного раніше запису, вимагає монопольного доступу до активного з’єднання )

    Взаємодія Data. Adapter з джерелом даних Взаємодія Data. Adapter з джерелом даних

    Приклад. Наповнення Data Set // Створення з ’ єднання та визначення тексту запиту string connection. StringПриклад. Наповнення Data Set // Створення з ’ єднання та визначення тексту запиту string connection. String = Web. Configuration. Manager. Connection. Strings[«Northwind»]. Connection. String; Sql. Connection con = new Sql. Connection(connection. String); string sql = «SELECT * FROM Employees»; // Створення екземпляру класу Data. Adapter Sql. Data. Adapter da = new Sql. Data. Adapter(sql, con); // Створення пустого Data. Set та виконання методу Fill() Data. Set ds = new Data. Set(); da. Fill(ds, «Employees»); // Відображення вмісту Data. Set String. Builder html. Str = new String. Builder(«»); foreach (Data. Row dr in ds. Tables[«Employees»]. Rows) { html. Str. Append(«

  • «); html. Str. Append(dr[«Title. Of. Courtesy»]. To. String()); html. Str. Append(» «); html. Str. Append(dr[«Last. Name»]. To. String()); html. Str. Append(«, «); html. Str. Append (dr[«First. Name»]. To. String()); html. Str. Append(«
  • «); }

    Приклад. Наповнення Data Set Приклад. Наповнення Data Set

    Робота з множинними таблицями та відношеннями string connection. String = Web. Configuration. Manager. Connection. Strings[Northwind]. Connection.Робота з множинними таблицями та відношеннями string connection. String = Web. Configuration. Manager. Connection. Strings[«Northwind»]. Connection. String; Sql. Connection con = new Sql. Connection(connection. String); string sql. Cat = «SELECT Category. ID, Category. Name FROM Categories»; string sql. Prod = «SELECT Product. Name, Category. ID FROM Products»; Sql. Data. Adapter da = new Sql. Data. Adapter(sql. Cat, con); Data. Set ds = new Data. Set(); try { con. Open(); // Наповнити Data. Set даними з таблиці Categories da. Fill(ds, «Categories»); // Змінити текст команди та отримати дані // таблиці Products. da. Select. Command. Text = sql. Prod; da. Fill(ds, «Products»); } finally { con. Close(); } // Продовження див. на наступному слайді

    // Визначити відношення між Categories та Products.  Data. Relation relat = new Data. Relation(Cat. Prods,// Визначити відношення між Categories та Products. Data. Relation relat = new Data. Relation(«Cat. Prods», ds. Tables[«Categories»]. Columns[«Category. ID»], ds. Tables[«Products»]. Columns[«Category. ID»]); // Додати відношення до Data. Set. ds. Relations. Add(relat); String. Builder html. Str = new String. Builder(«»); // Пройти у цикліпо всіх записах категоріях та побудувати строку HTML. foreach (Data. Row row in ds. Tables[«Categories»]. Rows) { html. Str. Append(««); html. Str. Append(row[«Category. Name»]. To. String()); html. Str. Append(«

      «); // Получить дочерние (products) записи для родителя (category). Data. Row[] child. Rows = row. Get. Child. Rows(relat); // Пройти по всем продуктам данной категории. foreach (Data. Row child. Row in child. Rows) { html. Str. Append(«
    • «); html. Str. Арреnd(child. Row[«Product. Name»]. To. String()); html. Str. Append(«»); } html. Str. Append(«

    «); } Html. Content. Text = html. Str. To. String(); Робота з множинними таблицями та відношеннями (2)

    Пошук визначених рядків // Отримати записи з таблиці Products Data. Row[] match. Rows = Data. Set.Пошук визначених рядків // Отримати записи з таблиці Products Data. Row[] match. Rows = Data. Set. Tables[«Products»]. Select(«Discontinued = 0»); // Пройти по усіх продуктах, що мають знижки та сгенерувати перелік html. Str. Append(«

      «); foreach (Data. Row row in match. Rows) { html. Str. Append(«
    • «); html. Str. Append(row[«Product. Name»]. To. String()); html. Str. Append(«
    • «); } html. Str. Append(«

    «); Метод Select() класу Data. Table дозволяє отримувати масив об’єктів Data. Row на основі SQL-виразу. Приклад:

    Прив'язка даних  Ключова ідея прив'язки даних полягає у асоціюванні зв'язку між об'єктом даних та елементомПрив’язка даних Ключова ідея прив’язки даних полягає у асоціюванні зв’язку між об’єктом даних та елементом керуванн, а про побудову відповідного виводу піклується інфраструктура прив’язки даних ASP. NET. Приклад: Grid. View 1. Data. Source = ds; Grid. View 1. Data. Member = «Employees»; Grid. View 1. Data. Bind();

    Клас Data View служить Клас Data View служить

    Сортування за допомогою Data. View // Створити Connection, Data. Adapter та Data. Set string connection. StringСортування за допомогою Data. View // Створити Connection, Data. Adapter та Data. Set string connection. String = Web. Configuration. Manager. Connection. Strings[«Northwind»]. Connection. String; Sql. Connection con = new Sql. Connection(connection. String); String sql = «SELECT TOP 5 Employee. ID, Title. Of. Courtesy, Last. Name, Firs. Name FROM Employees»; Sql. Data. Adapter da = new Sql. Data. Adapter(sql, con); Data. Set ds = new Data. Set(); // Наповнити Data. Set da. Fill(ds, «Employees»); // Прив ’ язати оригінальні дані до элемента № 1. grid 1. Data. Source = ds. Tables[«Employees»]; // Сортувати за прізвищем та прив ’ язати до елемента № 2. Data. View view 2 = new Data. View(ds. Tables[«Employees»]); view 2. Sort = «Last. Name»; grid 2. Data. Source = view 2; // Сортувати за іменем та прив ’ язати до елемента № 3. Data. View view 3 = new Data. View(ds. Tables[«Employees»]); view 3. Sort = «First. Name»; grid 3. Data. Source = view 3; // Ініціювати процес прив’язки даних. Page. Data. Bind();

    Операції фільтрації Операція Опис ,  ,  = та = Виконують порівняння більш ніж одногоОперації фільтрації Операція Опис , = Виконують порівняння більш ніж одного значення. та = Виконують перевірку на еквівалентність. NOT Звертає на протилежний логічний вираз. Може використовуватися у поєднанні з будь-якої іншої конструкцією. BETWEEN Вказує діапазон включно. Наприклад, Units BETWEEN 5 AND 15 вибирає рядки, у яких значення стовпця Units знаходиться в межах від 5 до 15. IS NULL Перевіряє стовпець на null-значення. IN(a, b, с) Коротка форма операції OR з одним і тим же полем. Перевіряє еквівалентність значення стовпця будь-якого з перерахованих значень (a, b та c). LIKE Виконує перевірку відповідності рядкового значення шаблону. + Складає два числа або «склеює» два рядка. — Віднімає одне числове значення з іншого. * Перемножує два числових значення. / Ділить одне числове значення на інше % Обчислює модуль (залишок від ділення одного числа на інше). AND Комбінує більше однієї логічної конструкції. OR Комбінує більше однієї логічної конструкції.

    Фільтрація за допомогою Data. View string connection. String = Web. Configuration. Manager. Connection. Strings[Northwind]. Connection. String;Фільтрація за допомогою Data. View string connection. String = Web. Configuration. Manager. Connection. Strings[«Northwind»]. Connection. String; Sql. Connection con = new Sql. Connection(connection. String); string sql = «SELECT Product. ID, Product. Name, Units. In. Stock, Units. On. Order, » + «Discontinued FROM Products»; Sql. Data. Adapter da = new Sql. Data. Adapter(sql, con); Data. Set ds = new Data. Set(); da. Fill(ds, «Products»); // Фільтрувати продукт Chocolade. Data. View view 1 = new Data. View(ds. Tables[«Products»]); view 1. Row. Filter = «Product. Name = ‘Chocolade'»; Grid. Viewl. Data. Source = view 1; // Фільтрувати продукты, яких немає у замовленнях та на складі. Data. View view 2 = new Data. View(ds. Tables[«Products»]); view 2. Row. Filter = «Units. In. Stock = 0 AND Units. On. Order = 0»; Grid. View 2. Data. Source = view 2; // Фільтрувати продукти, чия назва починаєтся з букви Р. Data. View view 3 = new Data. View(ds. Tables[«Products»]); view 3. Row. Filter = «Product. Name LIKE ‘P%'»; Grid. View 3. Data. Source = view 3; this. Data. Bind();

    Розширене фільтрування з відношеннями Data. View  дозволяє застосовувати деякі складні вирази фільтрації,  наприклад, наРозширене фільтрування з відношеннями Data. View дозволяє застосовувати деякі складні вирази фільтрації, наприклад, на основі відношень. Щоб створити такий фільтруючий вираз, необхідно скомбінувати дві складові: • відношення, що пов’язує дві таблиці; • агрегатну функцію, таку як AVG(), МАХ(), MIN() або COUNT(). Ця функція застосовується до даних у пов’язаних записах. Приклад: // Визначення відношення між Categories та Products. Data. Relation relat = new Data. Relation («Cat. Prods», ds. Tables[«Categories»]. Columns[«Category. ID»], ds. Tables[«Products»]. Columns[«Category. ID»]); // Додати відношення до Data. Set. ds. Relations. Add(relat); // Застосування рядка з умовою до Grid. View Data. View view 1 = new Data. View(ds. Tables[«Categories»)); viewl. Row. Filter = «MAX(Child(Cat. Prods). Unit. Price) > 50»; Grid. View 1. Data. Source = view 1;

    string connection. String = Web. Configuration. Manager. Connection. Strings[Northwind]. Connection. String;  Sql. Connection con =string connection. String = Web. Configuration. Manager. Connection. Strings[«Northwind»]. Connection. String; Sql. Connection con = new Sql. Connection(connection. String); string sql. Cat = «SELECT Category. ID, Category. Name FROM Categories»; string sql. Prod = «SELECT Product. Name, Category. ID, Unit. Price FROM Products»; Sql. Data. Adapter da = new Sql. Data. Adapter(sql. Cat, con); Data. Set ds = new Data. Set(); . . . // Визначення відношення між Categories та Products. Data. Relation relat = new Data. Relation(«Cat. Prods», ds. Tables[«Categories»]. Columns[«Category. ID»], ds. Tables[«Products»]. Columns[«Category. ID»]); // Додати відношення до Data. Set. ds. Relations. Add(relat); // Створити обчислювані стовпці Data. Column count = new Data. Column( «Products (#)», typeof(int), «COUNT(Child(Cat. Prods). Category. ID)»); Data. Colunm max = new Data. Column( «Most Expensive Product», typeof(decimal), «MAX(Child(Cat. Prods). Unit. Price)»); Data. Column min = new Data. Column( «Least Expensive Product», typeof(decimal), «MIN(Child(Cat. Prods). Unit. Price)»); // Додати стовбці ds. Tables[«Categories»]. Columns. Add(count); ds. Tables[«Categories»]. Columns. Add(max); ds. Tables[«Categories»]. Columns. Add(min); // Показати дані Grid. View 1. Data. Source = ds. Tables[«Categories»]; Grid. View 1. Data. Bind(); Обчислювані стовпці

    Побудова компонента доступу до даних Основні рекомендації при створенні класу даних:  • Відкривайте і закривайтеПобудова компонента доступу до даних Основні рекомендації при створенні класу даних: • Відкривайте і закривайте з’єднання швидко. • Реалізуйте обробку помилок. • Слідуйте практиці дизайну без станів. • Не дозволяйте клієнтові вказувати інформацію рядка з’єднання. • Не підключайтеся під клієнтським ідентифікатором користувача. • Не дозволяйте клієнтам використовувати широкі відкриті запити. Багатошаровий дизайн класу бази даних

    Литература 1. Мак-Дональд, Мэтью, Шпушта, Марио.  Microsoft ASP. NET 2. 0 с примерами на C#Литература 1. Мак-Дональд, Мэтью, Шпушта, Марио. Microsoft ASP. NET 2. 0 с примерами на C# 2005 для профессионалов. : Пер. с англ. – М. : ООО «И. Д. Вильямс», 2007. – 1408 с. 2. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft. NET Framework 4. 0 на языке C#. 3 -е изд. – СПб. : Питер, 2012. – 928 с.

    Кінець Дякую за увагу Кінець Дякую за увагу

    Объекты ADO. NET Data Set. NET Applications Data Reader Command Object Connection Object Managed Data ProviderОбъекты ADO. NET Data Set. NET Applications Data Reader Command Object Connection Object Managed Data Provider (OLEDB) База данных. Провайдер базы данных Execute. Non. Query Execute. Scalar Data. Adapter

    Рядок з ‘ є днання • Об ’ єкт Sql. Connection  – Server – DatabaseРядок з ‘ є днання • Об ’ єкт Sql. Connection – Server – Database (Initial Catalog) – uid (User ID) – pwd (Password) • Об ’ є кт Ole. Db. Connection – Provider – Data Source (Server) – uid (User ID) – pwd (Password)

    Execute. Xx x. Использование классов ADO. NET Data Base SQL Server организации. Connection. Data. Reader Data.Execute. Xx x. Использование классов ADO. NET Data Base SQL Server организации. Connection. Data. Reader Data. Adapter Data. Set. Command Fill Update, Insert, Delete Client Program Компьютер пользователя. Execute. Reader Read Provider. Select

    Execute. Xxx. Использование классов ADO. NET Data Base SQL Server организации. Connection. Data. Reader Data. AdapterExecute. Xxx. Использование классов ADO. NET Data Base SQL Server организации. Connection. Data. Reader Data. Adapter Data. Set. Command Fill Update, Insert, Delete Client Program Компьютер пользователя. Execute. Reader Read Provider. Select

    Об ’ є кт Data. Adapter • Об ’ є кт Data. Adapter  – основнийОб ’ є кт Data. Adapter • Об ’ є кт Data. Adapter – основний клас ADO. NET, що забезпечує доступ до від ’ єднаних даних. • Data. Adapter – посередник між БД та об ’ єктом Data. Set • Методи Fill () (заповнення Data. Set ) та Update () (оновлення БД) • Властивості Select/Insert/Delete/Update. Command

    Обмеження Constraints • Ограничение – правила работы со строками в Data. Table • Два вида ограничений:Обмеження Constraints • Ограничение – правила работы со строками в Data. Table • Два вида ограничений: Unique. Constraint и Foreign. Key. Constraint • Unique. Constraint – запрещение добавлять в таблицы дублирующиеся элементы • Foreign. Key. Constraint – правила обновления дочерних строк при изменении родительской • Набор Constraints – свойство таблицы

    Foreign. Key. Constraint • Foreign. Key – внешний ключ, обычно первичный ключ в другой таблице •Foreign. Key. Constraint • Foreign. Key – внешний ключ, обычно первичный ключ в другой таблице • Определяемые правила: Update. Rule, Delete. Rule, Accept. Reject. Rule • Свойства ограничения: – Cascase – модификации родительской строки реплицируются в дочерние – None – ничего не делается – Set. Default – значение внешнего ключа устанавливается в умолчательное – Set. Null – значение внешнего ключа устанавливается в DBNull

    Фильтрация и  сортировка данных • После заполнения объекта Data. Set обычно работают с подмножеством егоФильтрация и сортировка данных • После заполнения объекта Data. Set обычно работают с подмножеством его данных • Для этого используют объект Data. View ( in-memory аналог SQL CREATE VIEW) • Data. View позволяет фильтровать и сортировать данные, а также обновлять их в связанном Data. Table • Свойство Row. Filter • Свойство Row. State – фильтрация данных на основе их состояния • Свойство Sort