Чтение онлайн

на главную - закладки

Жанры

Обработка баз данных на Visual Basic®.NET

Прайс Кевин Т.

Шрифт:

Чтобы организовать связь с элементами управления пользовательского интерфейса, следует создать метод Add объекта DataBindings элемента управления Windows Forms. В листинге 1.1 показан типичный способ создания связи с данными в приложении для работы с базами данных.

Листинг 1.1. Программный способ очистки и установления связи сданными

Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As _

 System.EventArgs) Handles MyBase.Load

 txtFirstName.DataBindings.Clear

 txtLastName.DataBindings.Clear

 txtFirstName.DataBindings.Add("Text", DsCustomer1, "tblCustomer.LastName")

 txtLastName.DataBindings.Add("Text", DsCustomer1, "tblCustomer.LastName")

 sqlAdapterl.Fill(DsCustomer1)

 ShowDataStatus

End Sub

(Убедитесь

в том, что для свойства ConnectionString объекта SqlConnection1 задана верная строка подключения с используемым вами сервером SQL Server. Дело в том, что в коде этого примера, который можно скопировать по адресу:указана строка подключения к серверу SQL Server, установленному на компьютере ROCKO автора книги. – Прим. ред.)

Обратите внимание, что вызовы метода Clear элементов управления коллекции DataBindings не обязательно создавать в разрабатываемом приложении. Они нужны в этом случае, потому что связь с данными ранее задана с помощью окна Properties.

Метод Add коллекции DataBindings принимает три параметра: свойство элемента управления, с которым связываются данные; объект источника данных (обычно, но не обязательно объект DataSet), ссылка на член источника данных, который предоставляет данные. После запуска приложения с приведенным выше кодом для метода Load в поле с именем клиента будет отображена его фамилия, а в поле с фамилией – его имя.

Элементы управления, взаимодействующие с данными

Элементом управления, взаимодействующим с данными (data-aware control), может быть любой элемент управления, имеющий свойство-коллекцию DataBindings. С помощью этого свойства можно ссылаться на любой тип данных, включая реляционные источник данных.

Свойство DataBindings соединяет элемент управления пользовательского интерфейса с элементом управления данными (т.е. именно так происходит связывание пользовательского интерфейса с базой данных). Поэтому говорят, что элемент управления пользовательского интерфейса связан с базой данных через элемент управления данными.

В предыдущих версиях Visual Basic с источником данных можно было связать относительно небольшое количество элементов управления пользовательского интерфейса. Возможности манипулирования связанными с данными элементами управления были довольно ограниченными: пользователь мог связать их с теми источниками данных, для которых существует провайдер данных ADO. Для взаимодействующих с данными элементов управления разработчику приходилось создавать рутинный код большого размера для выполнения вручную всех операций связывания данных. На платформе.NET практически каждый элемент управления Windows Forms может быть связан с данными, включая сложные элементы управления, например Tree View. Более того, разработчик не ограничен только реляционными источниками данных или известными среде Visual Studio .NET или ADO.NET. Любой объект, реализующий интерфейс IList, может быть связан с данными, включая наборы данных DataSet и более сложные конструкции, например массивы и коллекции.

Обновление записей в приложении просмотра данных

До сих пор в приведенных ранее примерах нам удавалось только извлекать и просматривать данные. А изменять данные можно было только в элементах пользовательского интерфейса, но их нельзя было сохранить (зафиксировать) в базе данных.

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

интерфейса в прежних версиях Visual Basic. Почему же в Windows Forms на платформе.NET связывание с данными организовано иначе?

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

На рис. 1.15 показана схема взаимосвязи между формой, объектом DataSet и базой данных в приложении на основе Windows Forms.

РИС. 1.15. Схема взаимосвязи между связанной формой, объектом DataSet и базой данных

В созданном ранее приложении все данные в исходном состоянии находятся в базе данных. Затем они извлекаются и сохраняются в памяти в объекте DataSet. Форма содержит элементы управления, связанные с полями таблицы в объекте DataSet. Форма обнаруживает появление новых данных и автоматически отображает содержимое полей в связанных с данными элементах управления.

В связанном с данными приложении изменение содержимого связанного с данными элемента управления влияет только на объект DataSet, т.е. изменение содержимого текстового поля приводит к изменению содержимого записи в таблице, которая находится в объекте DataSet. Но изменение объекта DataSet не копируется в базу данных, а сохраняется до тех пор, пока не поступит явное указание скопировать их в базу данных (с помощью метода Update набора данных DataSet). Хотя явное включение этой инструкции может показаться излишним (ведь в прежних версиях Visual Basic этого делать было не нужно), но на самом деле оно позволяет добиться более высокой производительности. Дело в том, что в таком случае приложению не нужно постоянно поддерживать соединение с базой данных во время редактирования данных пользователем.

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

Листинг 1.2. Сохранение данных с помощью явного обновления объекта DataSet при перемещении пользователя к другим записям

Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bfnNext.Click

 Me.BindingContext(DsCustomer1, "tbICustomer").Position += 1

 SqlDataAdapter1.Update(DsCustomer1)

 ShowDataStatus

End Sub

Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click

 Me.BindingContext(DsCustomerl, "tblCustomer").Position -= 1

 SqlDataAdapter1.Update(DsCustomer1)

 ShowDataStatus

End Sub

Конечно, обновлять каждую запись при перемещении пользователя к другим записям совсем не обязательно. Поскольку разработчик может контролировать способ обновления объекта DataSet, можно было бы организовать обновление внесенных изменений с помощью специальной кнопки или команды меню Save. Можно также отложить фиксацию обновлений до окончания редактирования группы строк, т.е. использовать пакетное обновление. ВADO.NET для пакетного обновления не нужно создавать какой-либо иной специализированный код, потому что оно выполняется автоматически объектами DataSet (который сохраняет данные в памяти) и SqlDataAdapter (который отвечает за выполнение необходимых команд управления базой данных для гарантированного корректного представления, вставки, обновления и удаления данных). Более подробно связь между этими объектами описывается в главах 5, "ADO.NET: объект DataSet", и 6, "ADO.NET: объект DataAdapter".

Поделиться:
Популярные книги

Жена проклятого некроманта

Рахманова Диана
Фантастика:
фэнтези
6.60
рейтинг книги
Жена проклятого некроманта

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

Демон

Парсиев Дмитрий
2. История одного эволюционера
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Демон

30 сребреников

Распопов Дмитрий Викторович
1. 30 сребреников
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
5.00
рейтинг книги
30 сребреников

Небо в огне. Штурмовик из будущего

Политов Дмитрий Валерьевич
Военно-историческая фантастика
Фантастика:
боевая фантастика
7.42
рейтинг книги
Небо в огне. Штурмовик из будущего

Осознание. Пятый пояс

Игнатов Михаил Павлович
14. Путь
Фантастика:
героическая фантастика
5.00
рейтинг книги
Осознание. Пятый пояс

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Блокада. Знаменитый роман-эпопея в одном томе

Чаковский Александр Борисович
Проза:
военная проза
7.00
рейтинг книги
Блокада. Знаменитый роман-эпопея в одном томе

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Книга 4. Игра Кота

Прокофьев Роман Юрьевич
4. ОДИН ИЗ СЕМИ
Фантастика:
фэнтези
боевая фантастика
рпг
6.68
рейтинг книги
Книга 4. Игра Кота

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Новый Рал 2

Северный Лис
2. Рал!
Фантастика:
фэнтези
7.62
рейтинг книги
Новый Рал 2

Низший 2

Михайлов Дем Алексеевич
2. Низший!
Фантастика:
боевая фантастика
7.07
рейтинг книги
Низший 2

Под маской, или Страшилка в академии магии

Цвик Катерина Александровна
Фантастика:
юмористическая фантастика
7.78
рейтинг книги
Под маской, или Страшилка в академии магии