Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Вебмастеру -> Сеппа Д. -> "Microsoft ADO.NET" -> 159

Microsoft ADO.NET - Сеппа Д.

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 153 154 155 156 157 158 < 159 > 160 161 162 163 164 165 .. 260 >> Следующая

(OrderlD, ProductID, Quantity, UnitPrice) " + VALUES (10503, 65, 20, 21.05)"; cmd,CommandText = strSQL; cmd. ExecuteNonQueryO;
}
static DataTable GenTabieO (
ІЗ—5958
362
Часть Автономная работа с данными: объект DataSet модели ADO NilT
DataTable = new DataTab]e("Grd«r Details'): DataColumn col;
col = tbl.Columns.Add("OrderlD", typeof(int)}; COl.AllowDBNull = false;
col = tbl.Columns.Add("ProductID", typeof(int));
¦COl.AllowDBNull = false;
col = tbl.Columns.Add("Quantity, typeof(Int16)}; COl.AllowDBNull = false;
¦col = tbl, Columns. Add("UnitPrice", typeof(Decimal)); COl.AllowDBNull = false;
tbl.PrimaryKey = new DataColumn[] (tbl.Columns["OrderID"],
tbl.Columns["ProductID"]};
return tbl;
!
Мы только что написали большой объем кода для передачи отложенных изменений. Код, на основе которого генерируются параметризованные объекты Command, уникален для исходного запроса. Тем не менее код процедуры Submit-
Он просматривает ic-ми!spoKUtn 1ыс п.чмепептг в объекте DataTable, определяет, как именно изменены объекты DataRow, вызывает функцию, запрос для передачи отложенного изменения, и затем, в зависимости от возвращенного емгкпии финиши, соответствующим образом помечает объект DataRow.
По существу, мы воссоздали функциональность обновления, предоставляемую объектом DataAdapter. Подробнее о нем — ниже.
Передача обновлений с использованием объектов Dafa4dapferAD0.NET
В главе 5 рассказывалось об использовании объекта ihiinAiianiet для записи результатов запросов в объекты DataTable. но это лишь половина функциональности DaCtAdopie'' Данный объект также предназначен для передачи отложенных изменений из объектов DataSet,
Чтобы создать логику обновления, используемую объектами DataAdapter для передачи изменений в БД, можно:
• вручную программно сконфигурировать объекты lAntuAdapt,-^-.
• воспользоваться в период выполнения объектом О ч1ип<111<.1И!1И(к'Г.
• воспользоваться в период разработки мастером Data Adapter Configuration Wizard.
У каждого из этих способов есть свои преимущества и недостатки, которые я
подробно разберу далее.
Конфигурирование объектов DataAdapter вручную
DataAdapter предоставляет четыре содержащих объекты
.Как вы помните, свойство SelectCommmta'содержит объект Command, при помощи которого DataAdapter заполняет ваш объект DataTable. Три остальных свой-
ГЛАВА Передача обновлений в базу данных
363
и DdeteCnmruand, содержа объекты Com-при помощи которых DataAdapter передает отжжиш,к изменения. Такая архитектура сильно отличается от объектной модели ADO. Волшебная технология '-черииняшпк- больше не используется. Вы управляете тем, как Data-Adapter передает отложенные изменения, поскольку п|.ху'ич-| iummcic используемые им объекты Command.
Метод Update объекта DataAdapter очень гибок и принимает объект IkdaSel. DataSet и имя таблицы, объект DataTable или массив объектов DataRou: Независимо от того, как вызван метод DataAdapter попытается дать отложжжге изменения при помощи соответствующего объекта Command. Всю работу, выполнявшуюся нами ранее с помощью процедуры удается выполнить посредством одного вызова метода
Связанные параметры
Созданная нами процедура особенно сложна. Кроме того,
она выполняет не слишком много работы. Вместо этого процедура делегирует zr: одной из трех функций: SubmitUpdate,SubmitImc-rtили SnhnutDcteie. Эти функции на основании содержимого измененной записи подставляют в соответствующий запрос значения параметров.
Для передачи отложенных изменений с приме-
няются такие же параметризованные запросы.
UPDATE [Order Details]
SET OrderlD = ?, ProductlD = ?, Quantity = ?, UnitPrice =%' WHERE OrderlD = ? AND ProductlD = ? AND Quantity = ? AND UnitPrice = ?
INSERT INTO [Order Details] (OrderlD, ProductlD, Quantity, UnitPrice)
VALUES (?, ?, ?, ?)
DELETE FROM [Order Details]
WHERE OrderlD = ? AND ProductlD = ? AND Quantity = ? AND UnitPrice = ?
Тем не менее при добавлении параметров в объекты Command, хранящиеся в свойствах объекта DataAdapter. мы используем два свойства объекта Parameter
предназначенные специально для обновлений на основе SourceColimvi и SourceVersion.
По сути, эти свойства связывают объект Parameter с объектом DataCoitnrw из состава Data Table. Перед выполнением запроса DataAdapter на основе данных свойств определяет, какое значение задать свойству Value объекта Parameter, аналогично тому, как это осуществлялось в функциях Submit! '[нШе Submitlnsert и SubmuDelete. Подробнее - на рис. 10-2.
Следующий фрагмент кода не только создает параметризованные объекты
Command, но и задает значения свойств SourceColumn • SourceVersion объектов Parameter. Значение свойства по умолчанию SourceVersion - DataRoie^rsion.Ciarent. и задавать его только если объект Parameter требуется связать с ориги-
нальными значениями нужного столбца.
364 Часть III Автономная работа с данными: объект ОаТаБе! модели ADO.NET
OrderlD ProductiD Quantity UnitPrice
DataRow (текущая версия) ~"* 10503 65 20 21.05
> I
\ *
UPDATE [Order Details]
Предыдущая << 1 .. 153 154 155 156 157 158 < 159 > 160 161 162 163 164 165 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100