Обновление записей в приложении просмотра данных
Обновление записей в приложении просмотра данных
До сих пор в приведенных ранее примерах нам удавалось только извлекать и просматривать данные. А изменять данные можно было только в элементах пользовательского интерфейса, но их нельзя было сохранить (зафиксировать) в базе данных.
Интуитивно понятно, что изменения в связанном с данными элементе управления пользовательского интерфейса должны автоматически сохраняться в базе данных. Именно так работают различные связанные с данными элементы управления пользовательского интерфейса в прежних версиях 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".
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Немного о демонстрационном приложении.
Немного о демонстрационном приложении. Любой автор статьи рано или поздно сталкивается с нелегким вопросом: какую среду разработки использовать для иллюстрирования излагаемого материала. Даже после выбора Visual C++ в качестве базы остается несколько альтернативных путей:
Ускоренное обновление данных
Ускоренное обновление данных Наибольший выигрыш в скорости при использовании Yaffil наблюдается при обновлении данных.Переработаны алгоритмы, связанные с управлением деревом "грязных страниц" буферного кэша, в результате чего устранено замедление при массивных
Как обеспечить в приложении возможность подключения модулей
Как обеспечить в приложении возможность подключения модулей Подключаемый к приложению модуль является динамической библиотекой, которая реализует какой-нибудь один или несколько интерфейсов. Интерфейс — это класс, содержащий только чисто виртуальные функции. Связь
Использование программы Microsoft Visio для просмотра и изменения схемы базы данных
Использование программы Microsoft Visio для просмотра и изменения схемы базы данных Помимо инструментов среды Visual Studio .NET, для создания, просмотра и изменения схем базы данных могут использоваться другие очень удобные средства. Программа Microsoft Visio обладает всеми необходимыми
Создание приложения для просмотра данных
Создание приложения для просмотра данных В предыдущем примере показан простейший способ связывания данных на основе извлечения всей таблицы и отображения ее в элементе управления DataGrid. А как отобразить только одну запись? Для этого потребуется использовать элементы
Обновление данных в объекте DataSet
Обновление данных в объекте DataSet Для обновления отдельной записи таблицы необходимо просто организовать доступ к нужной записи и присвоить новое значение одному из полей. Например, для изменения номера отдела, к которому относится Sam Johnson, можно использовать следующую
Обновление базы данных с помощью объекта адаптера данных
Обновление базы данных с помощью объекта адаптера данных Адаптеры данных могут не только заполнять для вас таблицы объекта DataSet. Они могут также поддерживать набор объектов основных SQL-команд, используя их для возвращения модифицированных данных обратно в хранилище
Запись Audio CD в приложении Nero Burning ROM
Запись Audio CD в приложении Nero Burning ROM 1. Вставьте чистый диск в записывающий привод компьютера и запустите программу Nero StartSmart.2. Перейдите на вкладку Rip and Burn (Перенос и запись).3. Щелкните правой кнопкой мыши на задании Burn Audio CD (Запись аудио-диска). В открывшемся контекстном
Запись Audio CD в приложении Nero Express
Запись Audio CD в приложении Nero Express Диск в формате Audio CD можно записать и в приложении Nero Express. Для этого нужно выполнить следующее.1. Вставьте чистый диск в записывающий привод компьютера и запустите программу Nero StartSmart.2. Перейдите на вкладку Rip and Burn (Перенос и запись).3.
22.3. Обновление записей
22.3. Обновление записей При рассмотрении процесса удаления записи уже обсуждался код, приводящий к обновлению записи.Когда обнаруживается корректная запись, все переменные поля записи с помощью переменной, выполняющей присваивание по умолчанию, назначаются переменной
Продолжение просмотра
Продолжение просмотра Чтобы глубоко понять концепции, предпочтительно читать эту книгу последовательно, однако читатели, желающие дополнить данный теоретический обзор, могут, прежде чем идти дальше, посмотреть, как работает метод на практическом примере. Для этого