|
Обновление базы данных с помощью объекта DataSet
Возможно, вы думаете: "Использование объекта DataSet для обращения к данным
в памяти пригодится только при чтении данных, но как же быть, если необходимо их
изменить или добавить?". Не беспокойтесь, объект DataSet предоставляет возможность извлечения подмножества данных, которые были изменены, удалены или добавлены, что позволяет проверить их достоверность перед тем, как отразить изменения непосредственно в базе данных. Обычное использование объекта DataSet предусматривает добавление, изменение и удаление записей. Поскольку мы уже создали
объект DataAdapter, нам остается связать с ним объект CommandBuilder и вызвать метод DataAdapter.Update () для обновления, добавления или удаления записей. Соответствующие операции выполняются с помощью команд, заданных свойствами объекта DataAdapter InsertCommand, UpdateCommand и DeleteCommand
using System;
using System.Data;
using System.Data.OleDb;
// Создание объекта Connection.
OleDbConnection conn = new
01eDbConnec:tion("Provider=SQLOLEDB; " +
"Server=localhost;" +
"Database=ADONET;" +
"UID=someuser;"};
// Создание объектов DataSet и Command.
DataSet ds = new DataSet ();
OleDbDataAdapter daAuthors =
new OleDbDataAdapter("SELECT * FROM CUSTOMER", conn);
// Создание объекта OleDbCommandBuilder -
// оболочки объекта DataAdapter, поддерживающей
// динамическое генерирование команд
// обновления, добавления и удаления данных.
OleDbCommandBuilder bldr =
new OleDbCoinmandBuilder (daAuthors);
// Заполнение объекта DataSet.
daAuthors.Fill(ds);
// Извлечение таблицы из объекта DataSet.
DataTable tbl = ds.Tables["Table"];
// Установка первичного ключа.
DataColumnU colArr = new DataColumn[1];
colArr[0] = tbl.Columns[0];
tbl,PriraaryKey = colArr;
// Вставка новой строки.
objectf] rowVals = new object[3];
rowVals[0] * Guid.NewGuidO;
rowVals[l] = "Greg";
rowVals[2] = "Maddux";
DataRow insertedRow = tbl.Rows.Add(rowvals);
// Удаление строки,
tbl.Rows[0].Delete();
// Изменение полей в строке.
tbl.Rows[1].BeginEdit();
tbl.Rows[l]["FirstName"] = "New Name";
tbl.Rows[1].EndEdit{);
// Сохранение изменений в базе данных,
conn. Open () ;
daAuthors.Update(ds);
|
Отметим несколько важных моментов. Во-первых, мы нигде не устанавливали
значение свойства InsertCommand, UpdateCommand или DeleteCoramand. Вместо
этого был создан экземпляр класса OleDbCommandBuilder. При создании объекта
CoramandBuilder конструктору передается объект DataAdapter. Объект CommandBuilder
регистрирует себя в качестве "слушателя" объекта DataAdapter и, при необходимости,
на лету создает команды обновления, удаления или вставки данных. К тому же мы ус-
тановили значение свойства PrimaryKey для того, чтобы объект CommandBuilder знал
правила создания объектов Command. Обратите внимание: после выполнения запроса
к базе данных (в методе Fill) соединение было закрыто, затем мы заново открыли
его непосредственно перед выполнением метода Update (}.
Предыдущая стр.   
Оглавление   
Следующая стр.
Средняя оценка:     (1 - 1 голосов) Для оценки необходимо зарегистрироваться
Только зарегистрировавшиеся пользователи могут оставлять комментарии
|
|