Практическа работа №02 Свързване на базата данни ACCESS в Visual Studio 2012 C# с помощта на метода ADO
1. Цел на работата:
Научете правилата за свързване на база данни ACCESS в Visual Studio 2012 C#.
Създайте приложение, за да демонстрирате свързаност с база данни.
Теми за предварително проучване
1). Visual Studio 2012 C# среда за разработка
2). Visual Studio 2012 C# елементи
Теоретичен материал
ADO .NET. Достъп до данни
Предполага се, че към момента на писане на приложението съответната база данни вече е създадена.
Обектният модел ADO .NET реализира отделен достъп до данни. В същото време в Visual Studio .NET има много ВГРАДЕНИ съветници и дизайнери, които ви позволяват да внедрявате механизми за достъп до базата данни на етапа на разработване на програмния код.
От друга страна, задачата за получаване на достъп до данни може да бъде решена директно по време на изпълнение на приложението.
Концепцията за достъп до данни в ADO .NET се основава на използването на два компонента:
• DATASET (представен от обект от класа DataSet) от страна на клиента. Това е локално временно хранилище на данни;
• ДОСТАВЧИК НА ДАННИ (представен от обект от класа DataProvider). Това е посредник, който осигурява взаимодействие между приложението и базата данни от страна на базата данни (в разпределени приложения - от страна на сървъра).
ADO .NET. Обектен модел
Обектният модел ADO .NET предполага съществуването (при писане на приложение за база данни - използване) на два набора от класове, които изпълняват добре дефинирани задачи при работа с база данни:
Свързаните класове на обекти предоставят начин за установяване на връзка с база данни и управление на базата даннистрана на приложението; отделните класове на обекти осигуряват съхранение, използване и трансформиране на информацията, получена от базата данни от страна на приложението.
Набор от данни
В рамките на отделния ADO .NET модел, DataSet става важен елемент от технологията за отделен достъп. Прокси обектът DataSet ПРЕДСТАВЛЯВА НАБОР ОТ ТАБЛИЦИ.
За успешно решаване на проблема с представянето в DataSet'e има всичко необходимо. Неговата функционалност ви позволява да зареждате данни в локално хранилище от страна на приложението от всеки източник, приемлив за ADO .NET: SQL Server, Microsoft Access, XML файл.
Сред членовете на данните на този клас е набор от таблици. Обектът DataSet може да съдържа таблици, чийто брой е ограничен само от възможностите на набора Tables.
За всяка таблица – елемент от набора Таблици, може (и, разбира се, трябва) да се дефинира структура на таблица. Когато приложение взаимодейства с реална база данни, структурата на таблиците в DataSet трябва да съответства на структурата на таблиците в базата данни. DataSet е ADO .NET обект в паметта, използван от приложение за представяне на данни; той дефинира последователен модел на релационна база данни, който е независим от източника на данните, които съдържа. Степента на завършеност на модела се определя от задачите, които приложението решава.
Обект DataSet може да представлява напълно точен модел на база данни, като в този случай този модел трябва да включва пълния набор от структурни елементи на базата данни, включително таблиците, които съдържат данните, предмет на ограниченията и връзките между таблиците.
Информацията, съдържаща се в обекта DataSet, може да се променя независимо от източника на данни (от самата база данни). Уместностойностите се формират директно в програмата и се добавят към таблиците.
При работа с база данни могат да се събират данни от различни таблици, чието локално представяне се осигурява от различни обекти – представители на класовете DataSet. Класът DataSet дефинира много претоварени методи за сливане, които ви позволяват да обедините съдържанието на множество обекти на DataSet.
• само съдържанието на обекта (актуалната информация от базата данни);
• само структурата на обекта – представител на класа DataSet;
• пълен образ на DataSet (съдържание и структура).
По този начин DataSet е основа за изграждане на различни опции за отделни обекти - информационни хранилища.
Класът DataSet не е абстрактен клас и не е интерфейс. Това означава, че има много възможности за изграждане на отделни трезори.
Въз основа на базовия клас DataSet можете да дефинирате производни класове със специфична конфигурация, която съответства на структурата на базата данни.
Можете също така да създадете обект - представител на класа DataSet от оригиналната конфигурация и да добавите директно към този обект всички необходими компоненти под формата на таблици (обекти - представители на класа Table) на съответната структура и набор от релационни отношения.
Обектът е представител на класа DataSet и сам по себе си, без съпътстваща среда, има определена стойност. Факт е, че информацията, представена в приложението под формата на таблици, НЕ е задължително да има външен източник под формата на реална база данни. Нищо не пречи на програмиста да предостави на приложение четене на обикновен „плосък“ файл или дори „натрупване“ на необходимата информация чрез интерактивно взаимодействие с потребителя, използвайки обикновен диалог. Най-накрая основатаданните са един от възможните начини за ОРГАНИЗИРАНЕ на информация (а не просто за съхраняване!). Неслучайно DataSet представлява ИЗКЛЮЧЕНИ данни.
Всички изброени по-рано ADO .NET елементи работят върху DataSet.
От своя страна, в приложението, което осигурява взаимодействие с базата данни, обектът DataSet функционира единствено благодарение на обекта DataAdapter, който обслужва DataSet.
DataAdapter е централният компонент на архитектурата за отделен достъп.
Пример
Нека създадем базата данни planets.mdb (във формат ACCESS 2003). Структура на таблицата PLANET:
Попълнете таблицата с данни
Нека създадем проект в Visual Studio 2012 C#.
Поставете компонента DataGridView във формуляра:
Кликнете върху черната стрелка в горния десен ъгъл на компонента DataGridView.
Ще се появи прозорецът с настройки на източника на данни:
Нека изберем нашата база и таблицата PLANET.
Изберете таблицата PLANET.
На формата се появиха елементи за връзка с базата данни и таблицата.
Нека стартираме проекта:
Нека тестваме полученото приложение.
Направените промени (вмъкване, изтриване, корекция) не се записват в базата данни.
Можете да направите следния експеримент: инсталирайте компонента BidingNavigator във формуляра.
Резултатът ще бъде същият - промените не се записват в базата данни.