Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 251

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 245 246 247 248 249 250 < 251 > 252 253 254 255 256 257 .. 404 >> Следующая


Этот вариант программы с использованием метода Findo допускает многократное выполнение; сколько бы раз вы его нн запускали, он будет выполняться без ошибок. Однако эта программа не будет вызывать метод Add о d том случае, если строка с ключом *zaczi* уже находится в базе данных. Теперь давайте научимся повторно выполнять и эту часть программу.

Прантинум: удаление строк

Объект DataRow обладает методом DeieteO, который позволяет удалять текущую строку. В новом варианте программы смысл оператора if, выполняемого над объектом findnow, нзменен таким образом, что мы осуществляем проверку на предмет того, что значение findRow не равно null (другими словами, искомая строка найдена). После этого мы удаляем данную строку, вызывая метод Delete)) на объект findRow (этот вариант программы называется DataDeleteExample):

using System:

using System.Dataj .

using System.Data.SqlClient;

ti Использование пространства имен ADO,NET // Использование провайдера П данных .NET SQL Server

class DataDeleteExample (

public static void MainО ( -П Задание строки соединения специально для SQL Server SqlConnectioa thisConnection * new Sqiconnection(

i'Data Source=(local}jIntegrated Security=SSPI;¦ +

'Initial Catalog=northwind*);

// Установка соединения thisConnection.Open();

// Создание объекта DataAdapter для внесения // изменений и выполнения других операций

¦ SqlDataAdapte thisAdapter = new SqlDotaAdapter(

¦SELECT CustomeriD, CompanyName FROM Customers*, thisConnection);

ft Создание объекта CommandBuilder для формирования SQL-команд SqlConenandBuilder thisBuilder « new SqlCommandBuilder (thisAdapter];

II Создание объекта DataSet, предназначенного для 11 хранения связанных таблиц, строк и столбцов DataSet thisDataSet ” new DataSet О;

П Наполнение объекта DataSet с помощью запроса,

// определенного ранее для объекта DataAdapter thisAdapter.Fill(thisDataSet, 'Customers*);

Console.WriteLdneCl rows before change: (0)*,

thisDataSet.Tables['Customers*].Rowe.Count);

П Объявление объекта типа keys, предназначенного для t! определения первичного ключа DotaColumn[] ] уз “ new DataColumn[1];

кеув[01 = thisDataSet.Tables['Customers'].Columns('CustomeriD']i thisDataSet.ТаЬ1ев['Customers*] .FrimaryKey => keys;
540 Глава 19

DataRow findRow - thisDataSet.Tables! !ustomers'].Rows.Find('ZACzi');

if {findRow I3 null)

(

Console,WriteLine('ZACZI already in Customers table');

Console.WriteLin^l'Removing ZACZI . . ,*)j

findRow.Delete <);

thisAdapter.Update(thisDataSet, 'Customers');

)

Console.WriteLine<4 rows after change: (0)’,

> thisDataSet.Tablea["Customers'].Rows.Count);

th iConnection.CloseO;

}

1

Как это работает

Обратите внимание на то, что вызов метода Delete () не приводит к удалению строки в базе данных, это происходит лишь в результате обращения к методу updateO, который фиксирует внесенные изменения.

Метод Deleted не осуществляет никакого удаления — он просто помечает строку как подлежащую удалению.

Каждый объект DataRow в семействе rows обладает свойством RowState, которое позволяет осуществлять контроль за тем, удсиена ли, добавлена, модифицирована или оставлена без изменений данная строка. Метод Delete о просто присваивает свойству RowState значение Deleted (удалена), а затем метод update^ осуществляет фактическое удаление всех строк в семействе rows,

Помеченных как Deleted,

В доступной в режиме on-line документации по Visual Studio.NET рекомендуется вызывать метод Acceptchanges() объекта DataSet после обращения к методу Delete(>; это приведет лишь к удалению строки из объекта DataSet и не окажет никакого влияния на саму базу данных, поскольку метод UpdateO работает только с теми строками, которые он может обнаружить в семействе Rows, а отсутствующая там строка будет просто проигнорирована. Никогда не вызывайте метод Acceptchanges о до выэова метода update о, если вам требуется удалить строку непосредственно из самой БД.

Все сказанное относится также и к методу Remove о, к которому следует обращаться, только если вам требуется удалить строки их семейства rows объекта Dataset, но не непосредственно из самой базы данных.

Осуществление доступа к нескольким таблицам объекта DataSet

Одним из наиболее значимых преимуществ модели ADO.NET по сравнению с предыдущими моделями организации доступа к данным является то, что объект DataSet допускает одновременное хранение внутри себя сразу нескольких таблиц
Доступ к данным посредством ADO.NET

541

и отношений между ннмн. Это означает, что появляется возможность передавать наборы связанных между собой данных между различными частями программы за одну операцию, а такой архитектуре оказывается присуще естественное поддержание целостности отношений между данными.

Объект DataReiation используется для описания отношений между различными объектами DataTable, хранящимися ? DataSet. У каждого объекта DataSet в объектах DetaReiation имеется семейство Relations, которое обеспечивает возможность осуществлять поиск и производить манипуляции над связанными таблицами,
Предыдущая << 1 .. 245 246 247 248 249 250 < 251 > 252 253 254 255 256 257 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.