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

С# - Ватсон К.

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


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

Console.Wr iteLine('I roue before change: (0}',

thisDataSet.Tables('Customers'].Rows.Count);

// Объявление объекта типа keys, предназначенного П для определения первичного кявча DataColumn [ ] keys * new DataColumn [ 1 ] ; -

keysIOJ = thisDataSet. Tablesf 'Customers'). Columns ['CustomeriD'] ,¦ thisDataSet.Tables['Customers*].PrimaryKey * keys;

DataRow findRow * thieDataSet.Tables['Customers'I.Hows.Find('ZACZI'); if (findRow =* null)

< ¦

Conaole.WriteLinel'ZACZI not found, will add to Customers table');

DataRow thisRow • thisDataSet. Tables ['Customers'] .NewRowO ;

thisRow['CustomeriD'] = 'ZACZI'; .

thisRow ['CompanyName*] * 'Zachary Zithers Ltd. *;

thisDataSet.Tables['Customers'].Rows.Add(thisRow);

if ((findRow =

thisDataSet.Tablee[*Customers'j.Rows.Find('2 CKI')) !“ null)

I ¦

Console.HriteLine('ZACZI successfully added to Customers table');

)

>

else

(

Console.WriteLine('ZACZI already present in database');

)

thisAdapi r.Update(thisDataSet, 'Customers');

Console.WriteLine('# rows after change: {0}*, thisDataSet.Tables['Customers'].Rows.Count); thisConnection.CloseО;

)

>

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

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

До того как появится возможность обратиться к методу FindO, необходимо задать первичный ключ. Первичный ключ — это то, что будет использоваться для осуществления поиска; ключ состоит нз одного или нескольких столбцов таблицы и содержит значение (нлн множество значений), которое идентифицирует данную строку таблицы уникальным образом, поэтому при осуществлении поиска по ключу МОЖНО найти одну И ТОЛЬКО одну строку. В БД Northwind ДЛЯ таблицы Customers в качестве первичного ключа используется ее столбец CustomeriD:
538

Глава 19

DataColunmM keys ¦ new DataColumn[1];

keys[0] » thisDataSet.Tablest'Customers*!.Columns["CustomeriD*];

thisDataSet.Tables["Customers*].PrimaryKey = keys;

Сначала мы создаем массив объектов DataColumn. Поскольку ключ может состоять из одного или нескольких столбцов, использование массива представляется наиболее естественной структурой; мы присваиваем массиву объектов DataColumn имя keys. Затем мы присваиваем первому элементу массива keys — keys[0] — значение столбца CustomeriD из таблицы Customers. Наконец, мы присваиваем массив keys свойству PrimaryKey объекта DataTable таблицы Customers.

В качестве альтернативы существует возможность загружать информацию о первичных ключах непосредственно из БД, хотя по умолчанию этого не происходит. Тем не менее мы можем явно потребовать от ADO.NET загрузить информацию

О первичном ключе, задав свойство MissingSchemaAction объекта DataAdapter до начала наполнения объекта Dataset следующим образом:

thisAdapter .HiasingScheiR&Act ion = MissingSch&nAAction. Addwi thxey thisAdapter .Fill < thisDataSet, 'Cuatomejrs'J ;

Это позволяет реализовать my же самую начальную установку первичного ключа посредством явной инициализации свойства PrimaryKey объекта DataAdapter.

Как бы то ни было, но теперь мы готовы осуществить поиск строки!

DataRow findHow = thisDataSet.TablesI'Customers'] .Rows.rind("ZACZI');

Метод FindO возвращает объект DataRow, поэтому мы создаем объект findRow типа DataRow для хранения результата поиска. Метод FindO принимает параметр, в котором содержится искомое значение; еслн ключ состоит из нескольких значений, это может быть массив объектов, однако в данном случае прн использовании всего одного значения мы получаем возможность просто передать строку, имеющую значение 'zaczi', которое как раз и является тем значеннем CuatomeriD, поиск которого нами осуществляется.

Если методу FindO удается обнаружить соответствующую строку, то он возвращает объект DataRow, совпадающий с данной строкой; если методу FindO не удается обнаружить совпадение, то он возвращает ссылку на null, что мы и пытаемся определить:

if (findHow == null) (

Console.WriteLine('ZACZI not found, will add to Customers table');

DataRow thisRow = thisDataSet.Tables['Customers'].NewRow(); thibSow['CustomeriD'] - "ZACZI"; thisRow['CompanyName'] = "Zachary Zither3 Ltd."; thisDataSet.Tables['Customers'].Rowa.Add(thisRow);

if {(findRow » thisDataSet.Tables['Customers"),Rows.7ind("ZACZI")) !- null)

{

Console.WriteLine('ZACZI successfully added to Customers table');

)

else

{

Console,WriteLine('ZACZI already present in database'!j

)
Доступ к данным посредством ADO.NET

539

Если значение findRow равно null, то мы продолжаем выполнение программы и добавляем строку так, как мы эго делали в предыдущем примере. Чтобы убедиться в том, что выполнение метода Add(> завершилось успешно, мы вызываем метод FindO немедленно вслед за операцией добавления — просто для того, чтобы можно было быть уверенными в том, что все работает так, как надо.
Предыдущая << 1 .. 244 245 246 247 248 249 < 250 > 251 252 253 254 255 256 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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