* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Применение объектов DataSet и обновление данных
8 февраля 2009
Объект DataSet — это центральный компонент архитектуры доступа, основанной на использовании отсоединенных данных. В архитектуре доступа к данным ADO.NET объекты DataSet представляют данные, загруженные в память. Чтобы заполнить DataSet, можно воспользоваться объектом DataAdapter либо создать новый объект DataSet, прочитав данные из файла в формате ХМ L или из «плоского» файла. Объек- ты DataSet также создают программно. Данные этого объекта разрешается связы- вать с элементами пользовательского интерфейса, а также модифицировать и при- менять для обновления БД, выполняемого с помощью объекта DataAdapter. На этом занятии вы научитесь создавать объекты DataSet программно, добавлять к ним объекты Data Relation и обновлять БД содержимым объекта DataSet. Изучив материал этого занятия, вы сможете:
^ создать объект DaiaSet программно или на основе данных, прочитанных из плоского файла; ^ добавлять к DataSet объекты Constraints и Data Relation', ^ обновлять БД при помощи объекта DataAdapter, ^ применять транзакции БД; ^ разработать схему обработки ошибок, возникающих при обновлении БД. Продолжительность занятия - около 60 минут. Объект DataSet представляет данные, загруженные в память. В сущности, это полная или частичная копия БД, расположенная на клиентском компьютере. По- лучение доступа к данным объекта DataSet не требует взаимодействия с БД, а их модификация не отражается на содержимом БД вплоть до ее обновления. На предыдущем занятии вы научились заполнять DataSet данными из объекта DataAdapter. Это основной способ создания объектов DataSet, но иногда требуется доступ к данным, хранящимся иным способом, например в виде массива или текс- тового файла с разделителями-запятыми. На этом занятии вы узнаете, как это дела- ется. Создание и заполнение DataSet без использования DataAdapter Объекты DataSet создают программно, как и любые другие объекты, например: Visual Basic .NET Din rnyDataSet As New DataSet() Visual C# DataSet myDataSet =• new DataSetO; В данном примере создается пустой объект DataSet. Чтобы заполнить его, необ- ходимо создать новый объект DataTable и добавить его к набору Tables: Visual Basic .NET Dim туТаЫе As New DataTableO myDataSet. Tables. Acfd(myTable) Visual C# DataTable rnyTable = new DataTableO; myDataSet. Tables. Acid (myTable); Теперь в наборе Tables нового объекта DataSet содержится единственная пустая таблица. Можно программно добавить к набору Tables объекта DataSet дополни- тельные объекты DataTable, Чтобы заполнить DataSet, необходимо определить структуру его таблиц. Для это- го следует программными средствами создать столбцы и добавить их к набору Columns объекта DataTable. Имя столбца можно указать при создании нового объек- та DataColumn, например, так: Visual Basic .NET Dim AccountsColumn As New DataColumn("Accounts") myDataSet.Tables(0).Columns.Add(AccountsColumn) Visual C# DataColurnn AccountsColumn = new DataColumn("Accounts"); myDataSet.Tables[Q].Columns.Add(AccountsColumn); Для каждого поля данных, которое предполагается хранить в объекте DataTable, требуется отдельный столбец. Создав все необходимые столбцы, можно добавить к Data Table объекты DataRow. DataRow — это набор, представляющий строку табли- цы БД. Создавать экземпляры DataRow напрямую нельзя, вместо этого следует выз- вать метод NewRow объекта DataTable, к которому добавляется объект DataRow. Visual Basic .NET Dim myRow As DataRow myRow = myDataSet.Tables(O).NewRow() Visual C# DataRow myRow; myRow = myDataSet.Tables[0].NewRowf); Созданный объект DataRow можно заполнить данными из любого источника, в том числе элементами набора или массива, а также введенными пользователем зна- чениями. Следующий пример демонстрирует заполнение объекта DataRow членами набора строк: Visual Basic .NET 1 Этот пример предполагает наличие объекта ArrayList с именем StringCollectJon Dim Counter As Integer For Counter = 0 to StringCollection.Count -1 iriyRow.Item(Counter) - StringCollection(Counter) Next Visual C# // Этот пример предполагает наличие объекта ArrayList с именем StringCollection for (int i = 0; i < StringCollection.Count; i ++) \ myRow.Item[Counter] = StringCollection[i]; ; Заполненный объект DataRow можно добавить к набору Rows объекта DataTable: Visual Basic .NET myDataSet.Tables(O).Rows.Add(myRow) Visual C# myDataSet.Tables[0].Rows.Add(fnyfiow); Следующие действия повторяют, пока не создадут и не заполнят все члены объекта DataSet. > Как программно создать объект DataSet 1. Объявите и создайте экземпляр класса DataSet. 2. Объявите, создайте и добавьте к набору Tables объекта DataSet нужное число объектов DataTable. 3. Для каждого объекта DataTable объявите и создайте экземпляры объектов Data- Column по числу столбцов таблицы; добавьте эти объекты к набору Columns объекта DataTable. 4. Создайте новую строку при помощи метода DataTable. New Row. 5. Заполните новую строку данными. 6. Добавьте новую строку к набору Rows объекта DataTable. 7. Повторяйте пункты 4—6, пока не добавите все данные.