Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 248

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 242 243 244 245 246 247 < 248 > 249 250 251 252 253 254 .. 404 >> Следующая


Изменение данных, хранящихся в объекте DataSet

Для того чтобы изменить значение конкретного столбца данных, надо просто присвоить ему новое значение, как это делается в приведенной ниже строке программы, взятой нз нашего примера:

thisDataSet.Tables['Customers'].Rows[91['CompanyName'! = 'Acme, Inc.';

Эта строка изменяет значение, хранящееся в столбце CompanyName в строке с номером девять в таблице customers, на 'Acme, inc.*. Однако эти изменения касаются только столбца объекта Dataset, хранящегося в памяти, а не собственно базы данных, расположенной на диске. Объекты DataSet, DataTabie, DataRow и DataColumn являются хранящимся в памяти представлением данных, содержащихся в таблице. Для обновления самой базы данных необходимо вызвать метод Update ().

Метод Update() объекта DataAdapter

update () — это метод объекта DataAdapter. Для обращения к этому методу необходимо указать объект DataSet, на основании которого будут вноситься изменения, н название таблицы, которой эти изменения касаются. Важно отметить, что имя объекта DataTabie ('Customers') совпадает с именем, которое использовалось прн предшествующем вызове метода Fill о:

thisAdapter.Update(thisDataSet, 'Customers');

Метод update о автоматически осуществляет просмотр всех строк в таблице DataTabie в поиске тех изменений, которые требуется внести в базу данных.

. У каждого объекта DataRow, принадлежащего семейству rows, имеется свойство

RowState (состояние строки), которое позволяет определять, была ли данная строка удалена, добавлена, изменена или она осталась без изменений. Все внесенные изменения находят свое отражение в базе данных.

Завершение работы

Теперь мы подтверждаем внесение изменений, выводя состояние данных "после” с помощью следующей записи:

Console.WriteLine('name after change: (0)',

thisDataSet.Tables['Customers'].Rowa[9]['CompanyName']);

В заключение мы закрываем соединение:

thisConnection.Close О;

Вот и все!
534

Глсша 19

Практикум: добавление строк

В предыдущем примере мы внесли изменения в значения уже существующих строк, а как быть, если требуется внести совершенно новую строку или удалить уже существующую? Этого очень просто добиться с помощью методов объекта DataRow. Модифицируйте программу с тем, чтобы она создавала новую строку в таблице customers, для чего замените код, расположенный между обращениями к методам Fill О и updated, на код, выделенный серым цветом (пример называется DataAddRawExorople):

thisAdapter.FillfthisDataSet, 'Customers');

Console.WriteLine<'I rows before change; {0)',

thisDataSet.Tables['Customers *].Rows.Count);

DataRow this Row » thisDataSet.Tablest'Cuetomers']-NewRowO ;

thisRow['CustomeriD'] = 'ZACZl'i

thisRow['CompanyName'] * 'Zachary Zithers Ltd.';

thisDataSet,Tables['Customers'].Rowe.Add(thisRow)j

Console.WriteLinef't rows after change: {0)'(

thisDataSet,Tables['Customers'].Rows.Count)i

thisAdapter,Update(thisDataSet, 'Customers');

В результате выполнения этой программы будет выведено следующее;

# rows before change: 91

(число строк до внесения изменений: 91 )

# rows after change: 92

( число строк после внесения изменений: 92)

Внимательно разберем эту программу.

Как это работает

Во-первых, чтобы представить картину “до", мы вводим новое свойство семейства Rows — count. Оно используется в качестве счетчика общего количества строк, имеющихся в таблице:

Console.WriteLine{'# rows before change: (0)',

thisDataSet .Tables [ "Customers'3 . Rqvjs .Count) ;

Следующим действием мы создаем новый объект типа строки с помощью метода NewRowO объекта DataTabie:

DataRow thisRow = thisDataSet.Tables['Customers').NewRowt);

Заметьте, что это приводит к созданию нового объекта типа строки, у которого имеются все те столбцы, из которых состоит таблица customers, но при этом не происходит фактического добавления этой строки в объект DataSet. До того как у нас появится возможность осуществить это добавление, потребуется присвоить всем столбцам какие-нибудь значения:

thiaRow['CustomerID'] - 'ZACZI';

thieRowt'CompanyName'] = 'Zachary Zithers Ltd.';

Теперь мы можем на самом деле добавить новую строку с помощью метода Add() семейства Rows:

thisDataSet.Tables['Customers'].Rows,Add(thisRow);
Доступ к данным посредством ADO.NET

535

Если снова обратиться к значению свойства count после вызова метода Add(), то можно убедиться в том, что в действительности прибавилась одна строка:

Console.WriteLine('I rows after change: (0)',

thisDataSet.Tables['Customers'].Rowe.Count);

Выходной поток свидетельствует о наличии 92 строк — на одну больше, чем было до внесения изменений. Как и в предшествующем примере для фактического добавления строки в базу данных, расположенную на диске, необходимо обратиться а методу Update():

thisAdapter.update(thisDataSet, 'Customers');

He забудьте, что объект DataSet представляет собой копию данных, находящуюся в памяти и используемую без установления соединения; на самом деле соединение с базой данных, хранящейся на диске, осуществляется посредством объекта DataAdapter, и следовательно, для синхронизации данных, расположенных в памяти в объекте DataSet и находящихся на диске, требуется обратиться методу update о,
Предыдущая << 1 .. 242 243 244 245 246 247 < 248 > 249 250 251 252 253 254 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.