Лабораторная работа по предмету «Базы данных»
Тема: «Работа с базой данных в среде Visual.Net»
Схема типичной программы в ADO.NET
- Вначале создается соединение с базой данных – класс Connection, который обеспечивается необходимой информацией – строкой соединения.
- Создается объект Command и задается команда, которую необходимо выполнить в данной СУБД. Нужно задать параметры этой команды, если они имеются.
- Если команда не возвращает данных, она просто выполняется с помощью одного из методов Execute. Например, это может быть удаление или обновление данных таблицы.
- Если команда возвращает выборку данных, их необходимо куда-то поместить. Если необходимо получить данные для последующего использования без связи с базой данных, то нужно создать объект класса DataAdapter и с его помощью сохранить данные в DataSet или в DataTable. Если нужно просто быстро выполнить команду, то создается класс DataReader, который требует сохранять соединение на все время работы, хранит выборку только для чтения и позволяет двигаться только вперед. Зато чтение с помощью DataReader выполняется в несколько раз быстрее, чем в DataAdapter.
- Задать полученный DataSet или DataReader как источник данных элемента управления или вывести их на страницу другим способом.
Объект Connection
Объект Connection для соединения с базой данных нуждается в строке соединения для указания пути к СУБД и входа в систему. Свойства класса Connection показаны в таблице. OleDbConnection, SqlConnection, OdbcConnection – наследники класса Connection, специфические для провайдеров OleDb, MS SQL, ODBC соответственно.
Свойство | Описание |
DataSource | Путь к базе данных в файловой системе при использовании Oledb, имя экземпляра базы сервера при использовании SqlConnection |
Database | Возвращает имя базы данных, используемой в объекте Connection после открытия |
State | Возвращает текущее состояние соединения. Возможные значения: Broken – «Соединение с источником данных разорвано», значение 16 Closed – «Соединение закрыто », значение 0 Connecting – «Идет процесс подключения », значение 2 Executing – «Соединение находится в процессе выполнения команды 4; Fetching – «Объект соединения занят выборкой данных» значение 8 Open – «Соединение открыто» значение 1. |
ConnectionString | Строка соединения с СУБД |
Все свойства, кроме ConnectionString, только для чтения.
|
Открытые методы
BeginTransaction | Перегружен. Начинает транзакцию базы данных |
ChangeDatabase | Изменяет текущую базу данных для открытого OleDbConnection |
Close | Закрывает подключение к источнику данных. Это рекомендуемый метод закрытия любого открытого подключения |
CreateCommand | Создает и возвращает объект OleDbCommand, связанный с OleDbConnection |
CreateObjRef (унаследовано от MarshalByRefObject) | Создает объект, содержащий всю необходимую информацию для конструирования прокси-сервера |
Dispose (унаследовано от Component) | Перегружен. Освобождает ресурсы, используемые объектом Component |
EnlistDistributedTransaction | Зачисляет в указанную транзакцию в качестве распределенной транзакции |
Equals (унаследовано от Object) | Перегружен. Определяет, равны ли два экземпляра Object |
GetHashCode (унаследовано от Object) | Служит хэш-функцией для конкретного типа, пригоден для использования в алгоритмах хэширования и структурах данных, например в хэш-таблице |
GetLifetimeService (унаследовано от MarshalByRefObject) | Извлекает служебный объект текущего срока действия, который управляет средствами срока действия данного экземпляра |
GetOleDbSchemaTable | Возвращает сведения схемы из источника данных так же, как указано в GUID, и после применения указанных ограничений |
GetType (унаследовано от Object) | Возвращает Type текущего экземпляра |
InitializeLifetimeService (унаследовано от MarshalByRefObject) | Получает служебный объект срока действия для управления средствами срока действия данного экземпляра |
Open | Открывает подключение к базе данных со значениями свойств, определяемыми ConnectionString |
ReleaseObjectPoolOleDb Connection | Статический. Означает, что пул объектов может быть освобожден, когда последнее основное подключение будет освобождено |
ToString (унаследовано от Object) | Возвращает String, который представляет текущий Object |
|
Поставщик данных для приложения (Провайдер) – объект, предназначенный для обеспечения взаимодействия приложения с хранилищем информации (базами данных).
Источник данных (Data Provider) – это набор взаимосвязанных компонентов, обеспечивающих доступ к данным. Функциональность и само существование провайдера обеспечивается набором классов, специально для этой цели разработанных.
Объект DataSet – основной элемент в поддержке отсоединенного сценария работы с распределенными данными в ADO.NET. DataSet – это представление данных в памяти, предоставляющее полноценную реляционную модель, независимо от источника данных. Его можно использовать с несколькими различными источниками данных, например, данными из БД и XML. Кроме того, он представляет собой довольно мощную структуру данных, пригодную для автономного использования. DataSet может содержать несколько таблиц, связанных ограничениями и реляционными отношениями.
|
DataSet состоит из объектов типа DataTable и объектов DataRelation. К ним можно обращаться как к свойствам объекта DataSet. Свойство Tables возвращает объект типа DataTableCollection, который содержит все объекты DataTable используемой базы.
Объект типа DataTable представляет собой таблицу базы данных. Такой объект может быть создан программно или путем запроса к базе данных. Объект DataTable состоит из строк и столбцов. Строки представляют собой отдельные записи таблицы, столбцы — соответствующие поля.
Для получения совокупности столбцов объект DataSet имеет свойство Columns, возвращающее DataColumnCollection, которое в свою очередь состоит из объектов типа DataColumn. Каждый объект DataColumn представляет собой отдельный столбец таблицы, из которого можно получить любую запись.
Кроме набора таблиц DataSet имеет свойство Relations, которое возвращает объект типа Data Relation Collection, состоящий из объектов DataRelation. Каждый DataRelation объект хранит данные о связях между двумя таблицами посредством объектов DataColumn. Например, в базе данных Institute, которую предлагается вам создать, таблица Students имеет связь с таблицей Examen посредством столбца NumZac. Такое отношение называется на языке баз данных один ко многим (one-to-many). Любой результат экзамена может принадлежать только одному студенту, но один студент может сдать сколько угодно экзаменов.
DataSet —это образ реляционной базы данных. ADO.NET использует объект типа DataAdapter как мост между DataSet и источником данных, который является основной базой данных. DataAdapter содержит метод Fill() для обновления данных из базы и заполнения DataSet.
Таблица 1. Наиболее важные члены OleDbDataAdapter
Член | Описание |
DeleteCommand InsertCotnmand SelectCommand UpdateCommand | Используются для определения того, какая именно команда SQL будет передана на источник данных при вызове метода Update(). Каждое из этих свойств определяется при помощи объектов OleDbCommand. |
Fill() | Заполняет указанную таблицу в DataSet определенным пользователем количеством записей |
GetFillParameters() | Возвращает все параметры, использованные при выполнении запроса SELECT к источнику данных |
Update () | Вызывает соответствующие команды INSERT, UPDATE, DELETEк источнику данных для каждой вставленной, измененной или удаленной строки в таблице объекта DataSet. |
При использовании свойств DeleteCommand, InsertCommand, UpdateCommand, SelectCommand объект OleDbDataAdapter автоматически переводит внесенные нами изменения в таблицу данных в DataSet в соответствующие команды на языке SQL, сохраняя, таким образом, внесенные нами в DataSet изменения в источнике данных. Эти свойства позволяют определить соответствующие команды SQL в деталях.
С# включает такой мощный инструмент для отображения данных, как элемент управления DataGrid. DataGrid может применяться как для разработки Windows Forms приложений, так и для разработки Web-приложений. DataGrid - это элемент управления, который сочетает в себе все возможности таблицы Excel.
Создайте Windows приложение в среде Visual Studio.
Шаг-1: Создание проекта
Необходимо запустить среду разработки Visual Studio.Net 2010. Для этого вы должны выбрать закладку с названием Visual Studio.Net 2010. из меню Пуск → Программы → Microsoft Visual Studio.Net 2010. После этого откроется среда разработки Visual Studio.Net 2010. Дальше вам необходимо создать новый проект. Для этого выберете элемент Project из меню: File → New → Project:
С появившимся меню вам нужно проделать следующие действия:
1. В поле PInstalled Templates выберите Visual C# Windows;
2. В поле New Project выберите Windows Form Application;
3. В поле Name введите BD_prim:
и нажмите ОК.
Добавьте в проект форму. Перед вами появится пустой шаблон формы (окна будущего приложения), создаваемый по умолчанию средой разработки Visual Studio.Net 2010. Вам нужно подключиться к базе данных Institut.mdb, установить на вашу форму компоненты BindingSource и InstituteDataSet и настроить их.
В окне формы внизу появится значок
Далее будем создавать вот такую форму:
Для этого добавьте с панели инструментов ToolBox объект TabControl и расположите его на форме. В окне свойств (Properties) перейдите на строчку TabPages нажмите на . В окне tabPagesCollection Editor нажмите на кнопку ADD для добавления вкладок, измените свойства Name и Text следующим образом:
- для вкладки Студенты Name = tubStud, Text = Студенты;
- на второй вкладке Name = tubExam, Text = Экзамены;
- на третьей вкладке Name = tubStip, Text = Начисление стипендии.
Зайти в свойства (Properties) BindingSource1 и указать источник данных (Data Source), при этом указывается тип ДБ и ее расположение.
Затем перейдите на вкладку Студенты и добавьте следующие объекты с панели инструментов, изменив их свойства:
Name | datGridStud |
При добавлении откроется окно, в котором необходимо раскрыть список Choose Data Source
и выбрать из списка таблицу Students.
В форму добавятся объекты
Запустите приложение на выполнение (F5) и убедитесь, что объект DataGridView заполнился данными из таблицы Students, созданной базы данных Institute.mdb.
Добавьте три кнопки – объект Button:
Кнопка Добавить запись
Name | butInsStud |
Text | Добавить запись |