Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Кондаков Базовое программное обеспечение 2007

.pdf
Скачиваний:
20
Добавлен:
16.08.2013
Размер:
1.66 Mб
Скачать

D:\magistr\lab6\. В процедуре, реализующей обработку загрузки формы frmHelp, разместить код работы с тестовым файлом, приведенным в теоретическом разделе.

Чтобы перечисленные в коде объекты были восприняты транслятором, необходимо подключить библиотеку классов, отвечающих за ввод/вывод с помощью команды Imports System.IO. Указанная строка размещается первой в тексте программного кода формы.

Сохранить проект, проверить результат.

Создать две открывающиеся формы по нажатию опций меню – Транзакция и Просмотр. Задать формам следующие параметры:

Name – frmTrans;

Caption – Определить транзакцию; Name – frmView;

Caption – Просмотр транзакций.

Вывести на каждую форму по одной кнопки, задать параметры соответственно:

Name – cmdQuit;

Caption – Выход (для обеих).

Запрограммировать закрытие текущей формы по нажатию кнопки. Для формы frmTrans текст выглядит так:

Private Sub cmdQuit_Trans_Click()

Me.Close()

End Sub

Для формы frmView – аналогично.

Написать код загрузки новых форм по нажатию соответствующих клавиш меню. Код аналогичен тому, что использовался при загрузке формы frmHelp.

Сохранить проект, проверить результат. Продемонстрировать преподавателю работающее приложение. Подписать отчет о выполнении работы.

Дата ___________ Подпись преподавателя ______________

81

Лабораторная работа 7

РАБОТА С БАЗАМИ ДАННЫХ В VISUAL BASIC.NET

Цель работы: ознакомить студентов с основными возможностями работы в системе Visual Studio.Net с базами данных. Изучается использование коллекции классов ADO.Net для работы с реляционными базами данных, созданными в SQL Server 2000. Изучаются работы с использованием отсоединенных объектов DataSet и работа с использованием запросов SQL и хранимых процедур, исполняемых непосредственно в базе данных.

Теоретические основы

Механизмы доступа к данным ADO.Net. Microsoft Visual Studio.Net имеет в своем составе новую библиотеку классов для соединения приложения с источником данных. Это коллекция классов ADO.Net. Главное, что отличает этот новый набор от предыдущих объектов доступа данным, заключается в том, что ADO.Net позволяет работать в отрыве от источника данных. Это очень важно при создании Web-приложения. В этом случае приложение считывает данные, формирует объект, содержащий эти данные, и закрывает связь с источником данных. Пользователь работает с этими данными, формирует необходимые изменения, устанавливает контакт с источником данных и передает ему изменения. Такой режим работы позволяет экономить ресурсы сервера. В то же время ADO.Net позволяет работать и в связи с данными.

Второе отличие ADO.Net заключается в том, что при работе в отрыве от источника данных обмен данными осуществляется в формате XML.

Рассмотрим далее основные объекты, входящие в ADO.Net, которые будут использованы в данной работе. В интегрированной среде разработки Visual Studio.Net эти объекты находятся на палитре объектов (Toolbox) в разделе Data.

Поставщики данных ADO.Net. Поставщик данных – это набор классов, предназначенных для взаимодействия с хранилищем данных определенного типа. ADO.Net имеет в своем составе два по-

ставщика: SQL Client.Net Data Provider и OLE DB.Net Data Provider.

Первый поставщик используется при работе MS SQL Server, начи-

82

ная с 7-й версии. Второй поставщик используется при работе с любым источником данных при условии, что в системе установлен поставщик OLE DB требуемого типа. Оба поставщика включают в себя одинаковый набор классов. Далее мы будем описывать объекты поставщика SQL Server.

Connection. Объект SQLConnection реализует соединение с базой данных. Для организации связи формы с базой данных можно перетащить соответствующий объект с палитры на форму.

Главное свойство объекта Connection – ConnectionString (строка подключения). В строке указывается источник данных и необходимые атрибуты для подключения. Формировать строку подключения достаточно сложно, поэтому имеет смысл использовать специальный помощник, который устанавливает соединение при создании следующего объекта – DataAdapter.

DataAdapter. Объект SQLDataAdapter является своеобразным мостом между базой данных и отсоединенным объектом DataSet. С помощью DataAdapter данные перемещаются из базы данных в набор DataSet. Как уже отмечалось выше, Visual Studio.Net имеет специальный помощник для создания соединения и адаптера. Рассмотрим его работу. Перетаскиваем из палитры объектов SQLDataAdapter на форму. Начинает работать помощник.

Прежде всего предлагается установить соединение с данными. Либо выбирается уже установленное ранее, либо нажимаем кнопку New Cjnnection. Открывается окно установления соединения

(рис. 7.1).

Так как мы используем объект связи с SQL Server, выбирать поставщика данных не требуется, он определен заранее. Сразу открывается окно Подключение. Выбираем из выпадающих списков SQL сервер и базу данных. Список баз данных появляется после указания существующего сервера. Следует установить тип проверки входа. Мы будем использовать учетные сведения операционной системы. Нажимая кнопку «Проверить подключение», проверяем установление соединения с данными. После подтверждения создается строка подключения и создается объект Connection.

83

Рис. 7.1. Окно установления соединения с хранилищем данных

Продолжаем создание адаптера. Выбираем тип запроса для создания адаптера данных. Существует три возможности: SQL запрос, новая хранимая процедура и существующая хранимая процедура. Мы будем использовать запрос. Для этого вызываем создатель запросов (кнопка Query Builder). Это средство очень похоже на аналогичную процедуру SQL Server. На рис. 7.2 представлен результат создания запроса.

84

Рис. 7.2. Окно создания запроса для определения DataAdapter

На этом этапе сформировано соединение с хранилищем данных и выбран набор данных, который будет копироваться в отсоединенный набор DataSet.

DataSet. Объект DataSet – это набор данных. Его отличие от наборов данных, используемых в более ранних коллекциях объектов связи с данными, заключается в том, что он способен включать в себя данные с помощью нескольких адаптеров. DataSet по сути –

85

копия части базы данных. Рассмотрим процедуру создания набора

DataSet.

Стартуем средство создания набора данных с помощью главного меню среды разработки Data Æ Generate DataSet. Открывается окно, представленное на рис. 7.3.

Рис. 7.3. Окно создания объекта DataSet

На этом этапе создано соединение с хранилищем данных, адаптер данных и набор DataSet. Однако следует учесть, что при этом созданный набор DataSet является пустым. Чтобы заполнить его данными, необходимо использовать метод Fill объекта DataAdapter. Ниже приводится фрагмент кода заполнения набора данных.

DS_trans1.Clear()

SqlDataAdapter1.Fill(DS_trans1)

86

Первая команда очищает набор DS_trans1 с использованием его метода Clear(). Во второй команде метод Fill() объекта SQLDataAdapter1 заполняет набор данных новыми данными из хранилища данных.

Данный фрагмент текста обычно вставляется либо в текст метода загрузки формы, либо в метод обработки специальной кнопки загрузки информации.

Ни один из перечисленных объектов не имеет визуальных компонент для представления данных при работе приложения. Для этого используются связанные элеметы управления. Связанные элементы управления – это объекты управления связанные с данными, например, с набором DataSet.

DataGrid. Элемент управления DataGrid – это специальный объект, служащий для представления данных. Он имеет форму таблицы, столбцы которой соответствуют столбцам ображаемой таблицы базы данных.

Размещаем его на форме и задаем свойство этого объекта DataSource по имени таблицы из набора DataSet, которую мы хотим отобразить на форме. После этого при запуске приложения в объекте DataGrid будет отображаться содержание таблицы, скопированной из базы данных в набор DataSet.

На этом этапе разработки наименования столбцов соответствуют их наименованиям в исходной таблице. Это может быть неудобно, так как при разработке базы данных обычно используются сокращенные условные наименования, набранные латинскими буквами. Таблицы пользовательского приложения должны быть на национальном языке и полностью понятными. Кроме того, возможно желание отформатировать ширину столбцов, шрифт и т.п. Для настройки вида таблицы в окне свойств объекта необходимо установить коллекцию свойств TableStyles. Для этого щелкнуть мышью на кнопке свойства. Открывается окно редактора свойств таблицы, представленное на рис. 7.4.

Нажав кнопку ADD, добавляем описание таблицы. Устанавливаем значение свойства MappingName по имени выводимой таблицы.

Затем переходим к форматированию столбцов таблицы. Для этого устанавливаем коллекцию свойств столбцов – GridCol-

87

umnStyles. Открывается окно редактора свойств столбцов таблицы, представленное на рис. 7.5.

Рис. 7.4. Окно редактора форматирования объекта DataGrid

Нажимая кнопку Add, добавляем три объекта, соответствующие трем столбцам таблицы. Для каждого из них устанавливаем необходимые свойства. Прежде всего в выпадающем списке свойства MappingName выбираем наименование отображаемого столбца. Свойство HeaderText определяет отображаемый заголовок. Свойство Width – ширину колонки. Помимо этих свойств существуют и другие, которые в данной работе не используются.

После установления свойств таблицы форма готова к работе.

88

Рис. 7.5. Окно редактора форматирования столбцов DataGrid

ComboBox. Элемент управления ComboBox очень похож на объект ListBox. Отличие между ними заключается в том, что список ComboBox является выпадающим. Кроме того, у ComboBox имеется текстовое окно, в котором отображается значение выбранного элемента списка. Элемент управления ComboBox можно связать с данными. В отличие от элемента управления DataGrid, ComboBox может представлять пользователю значения только одного поля таблицы. Чтобы связать элемент управления с данными, необходимо установить два свойства ComboBox. Свойство DataSource указывает на таблицу соответствующего набора данных DataSet. После установки данного свойства у другого свойства –

89

DisplayMember появляется выпадающий список, содержащий имена столбцов выбранной таблицы. В этом списке отмечаем требуемый столбец.

У ComboBox существует еще одно свойство, содержащее значения столбца таблицы. Это свойство – ValueMember. Значение этого свойства не отображается в интерфейсе пользователя, но его можно считать программно. При работе с данными в этом поле удобно, например, размещать значение первичного ключа. Тогда, выбрав значение столбца, легко определить первичный ключ выбранной записи. Значение свойства ValueMember выбранного элемента считывается из свойства SelectedValue.

На этом этапе мы научились просматривать информацию из базы данных с помощью различных элементов управления Visual Basic.Net. Вторая задача приложения базы данных заключается в передаче изменений в базу данных. У набора данных DataSet существуют специальные механизмы, позволяющие передавать изменения данных в исходную базу данных. Кроме того, в ADO.Net существует специальный объект Command, который способен посылать запросы базе данных, включая запросы вставки и редактирования данных. С помощью этого объекта возможно также передавать параметры хранимой процедуре и посылать ее на выполнение.

Одним из приемов, который повышает защищенность данных в компьютеризированных СУиК ЯМ, является реализация всех функций системы посредством хранимых процедур. В данной работе мы рассмотрим именно такой подход.

Для использования объекта SQLCommand перетаскиваем его с палитры объектов на форму и устанавливаем ряд свойств. Свойству Connection присваиваем значение открытого соединения, на-

пример, SqlConnection1. У свойства CommandType выбираем в вы-

падающем списке значение StoredProcedure. И, наконец, в окне свойства CommandText набираем имя сществующей хранимой процедуры в квадратных скобках – [new_trans]. После задания этих свойств Visual Studio предлагает регенерировать параметры хранимой процедуры. Необходимо подтвердить это действие. После завершения операции, если все было установлено корректно, открыв коллекцию параметров процедуры, можно увидеть окно редактирования параметров (рис. 7.6).

90