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

 

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

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

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 91 92 93 94 95 96 < 97 > 98 99 100 101 102 103 .. 260 >> Следующая

tbl. Columns. AddC'ItemTotal", typeof(Deci5?al),
200
Часть III Автономная работа с данными: объект DataSet модели ADO.NET
"unitPrice * Quantity * (1 - Diaooofttn; tbl.PrimaryKey = new DataColumn[] (tbl.Columns["OrderlD"],
tbl.Columns["ProductID"]f;
//Создаем ограничения ForeignKeyConstraicts
fk = new ForeignKeyConstralnt(ds.Tables["Customers"].Coluinns["CustomerID"].
ds.Tables["Orders"].Columnsf"CustomerID"]); ds.Tables["Orders"].Constralnts.Add(fk);
fk = new Foreigr.KeyCor.strairit(ds. TablesL Orders" ]. Columns ["OrderlD"],
ds.Tables["0rder Details"].Columnsf"OrderlD"]); ds.Tables["Order Details"].Constraints.Add(fk);
Изменение содержимого объекта DataTabie
Вы уже умеете создавать объекты ihtloS'ci, DataTabie и ГШаСо/ипш. помещать результаты запросов в объекты DataTabie средствами объекта DataAdapter, а также просматривать содержимое объекта DataTabie. Теперь поговорим о том, как добавлять, изменять и удалять объекты DataRow.
Добавление нового объекта DataRow
Давайте заполним созданный нами объект DataSet данными. Б главе 5 рассказывалось, как с помощью объекта DataAdapter заполнить объект DataTabie данными из БД. Кроме того, можно загрузить данные из XML-файла; подробнее об этом -в главе Сейчас же я остановлюсь на построковой загрузке данных,
У объекта DataTabie есть свойство Rows, возвращающее объект DataRowCoUection, который содержит набор объектов DataRow, Как и в случае с большинством наборов, для добавления новых элементов в объект DataRowCoUection годится метод Add. Тем не менее принципы создания объектов DataRow и других объектов ADO. N ET различны.
Допустим, вам требуется программно добавить в объект DataTabie, уже содержащий 10 объектов DataRou\ еще 10 объектов DataRow. Чтобы добавить запись в таблицу, вы задаете значения каждого поля. Но ?,ж DataRow узнает структуру таблицы, т. е. определяет, какие столбцы она содержит? У объекта DataTabie есть метод Neu/Row, который возвращает новый объект DataRow с информацией обо всех
столбцах таблицы,
Visual Basic Г!LT
Dim row As DataRow = ds.Tables("Custome rs").NewRow row("CustomerID") = "ALFKI"
Visual C# NET
Datafioi* row = d.s.TsblsspCusiomerrrl. NewRowQ; row["CustomerID"] - "ALFKI";
Создав новый объект DataRow, стоит воспользоваться его свойством Item и заполнить различные поля. Кроме того, свойство позволяет просмотреть
содержимое поля записи. Item — свойство объекта DataRow по умолчанию, и по-
ГЛАВА 6 Работа с объектами DataSet
201
этому его не надо явно вызывать, чтобы им воспользоваться. Если нужно задать значение одного из полей объекта DataRow, укажите имя (или порядковый номер или собственно объект DataColumn) и требуемое значение поля.
Метод DataTableNeivRouсоздает новую запись, однако не добавляет ее в объект Deda'fdblc. Вообще говоря, не следует моментально добавлять новую запись в таблицу, поскольку в данный момент запись пуста. Полям задаются их значения по умолчанию или, если таковые не определены, значения Null. Если вы создадите новый объект DataRow и не станете сразу же добавлять его в набор Rows, то сможете предварительно задать значения полей новой записи. Столбец і"лы> itnenl > таблицы Customers не принимает значений Null и не имеет значения по умолчанию. Предположим, у вас есть объект DataTable Customers с первичным ключом, основанным на столбце CustomerlD. Если вы попытаетесь добавить в таблицу новую запись Customers, не задав значение поля CustomerlD, система сгенерирует исключение.
Указав значения всех нужных полей записи, можно добавить ее в объект Data-Table, воспользовавшись методом Add объекта DataRou-ColleAUm и передав ему эту запись:
Visual Basic .NET
Dim row As DataRow = ds.7ables<"Customers").NewRow row("CjstorcerlD"} = "Al FKT"
ds.Tables("Customers").Rows.Add(row)
Visual C# .NET
DataRow row = ds.Tables["Custuiners'"] NewRowC); row["CustomerID"] = "ALFKI";
ds.Tables["Customers"].Rows.Add(row);
Объект DataTable предоставляет еще один способ добавить новую запись в таблицу — метод /nadOataldiir. Первый параметр данного метода — это массив значений, элементы которого соответствуют столбцам таблицы. Второй параметр, AcceptCbcmge;;, позволяет управлять значением свойства Roiv-Stah' нового объекта DataRow. Если передать в качестве этого параметра False (см. ниже), значением свойства RowState объекта DataRow будет Added, как и при добавлении новой записи средствами методов DataTableNewRow и RowsAdd.
Visual Basic NET
Dim aValues As Objecto = <"ALFKI", "Alfreds Futterkiste",
"Maria Anders", "030-0074321") ds.TablesC'Customers"). LoadDataRow(aValues, False)
B-535E
202
Часть III Автономная работа с данными: объект DataSet модели ado net
Visual C# NET
object[] aValues = {"ALFKI", "Alfreds Futterkiste", "Maria Anders", "030-0074321"}; ds.Tables["Customers"].LoadDataRow(aValues, false);
Когда вы передаете изменения в БД с помощью метода f.>ataAda/'ier!:pdaie. объект DataAdapter просматривает значение свойства RowState всех объектов DataRow vi определяет, как обновлять БД - изменять существующую, добавлять новую или удалять имеющуюся запись. Если передать в качестве второго параметра метода loisdhalaRi >it значение 7m..' значением свойства slouiUz.-s нового объекта DataRow будет Unmodified, Это означает, что запись не содержит отложенных изменений, которые DataAdapter должен передать в БД. Подробнее о свойстве RowState объекта DataRow и обновлении БД - в главе 10.
Предыдущая << 1 .. 91 92 93 94 95 96 < 97 > 98 99 100 101 102 103 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100