ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Первым основным изменением, которое требуется внести в приложение, является определение двух новых статических членов-переменных класса Program для представления DataSet и объекта соединения. Также, чтобы заполнить DataSet начальными данными, модифицируется метод Main.
Обратите внимание и на то, что методы ListInventory, DeleteCar, UpdateCarPetName и InsertNewCar также были изменены с тем, чтобы они могли принять SqlDataAdapter в качестве параметра.
Установка свойства InsertCommand
При использовании адаптера данных для обновления DataSet первой задачей оказывается назначение свойствам UpdateCommand, DeleteCommand и InsertCommand действительных объектов команд (пока вы этого не сделаете, эти свойства возвращают null). Слово "действительные" для объектов команд здесь используется потому, что набор объектов команд, которые вы "подключаете" к адаптеру данных, изменяется в зависимости от таблицы, данные которой вы пытаетесь обновить. В этом примере соответствующей таблицей является таблица Inventory. И вот как выглядит измененный метод InsertNewCar.
После
создания объекта команды он "подключается" к адаптеру с помощью свойства InsertCommand. Затем в DataTable таблицы Inventory добавляется новая строка, представленная объектом dsCarInventory. После добавления DataRow в DataTable адаптер выполнит SQL-команду, обнаруженную в свойстве InsertCommand, поскольку значением RowState этой новой строки является DataRowState.Added.Установка свойства UpdateCommand
Модификации метода UpdateCarPetName оказываются приблизительно такими же. Просто создайте новый объект команды и укажите его для свойства UpdateCommand.
В данном случае, когда вы выбираете строку (с помощью метода Select), для RowState указанной строки автоматически устанавливается значение DataRowState.Modified. Другим заслуживающим внимания моментом здесь является то, что метод Select возвращает массив объектов DataRow, поэтому вы должны указать, какую именно строку требуется изменить.
Установка свойства DeleteCommand
Наконец, вы имеете следующую модификацию метода DeleteCar.
В этом случае вы находите строку, которую нужно удалить (снова с помощью метода Select), а затем устанавливаете для свойства RowState значение DataRowState.Deleted с помощью вызова Delete.
Исходный код. Проект CarslnventoryUpdaterDS размещен в подкаталоге, соответствующем главе 22.
Генерирование SQL-команд с помощью типов построителя команд