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

С# - Ватсон К.

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


Если посмотреть на таблицу в VS после выполнения этой программы, то можно будет увидеть, что мы действительно успешно осуществили добавление строки:

Customer S> 1 (Ccnvwyfltnw ICoractNwM'' ' Kontectlrtfe Ifldfrwf lOhr *
WARTH iW«UyiHtrkku ,»ИвК<иЙЫо : Accmntog Manager Tafcatu 38 Oulu
WEUI Wtfcwon Impwt&dora P*ia Perente Safes Manager Rub do Mwcado, 12 Rasendc
wwrc vrttfeOoverMvtets 'Oww 305- 14thAve.S. Si.-. И fcaHlc
WEIMC iWinunKale 't-lottiXd л Gmnfir^.i'feting Assets:t Kc&nfcatu 4S hftirfq ¦¦
WOLZA iwobkt Z4««j : ZbyiiskHei^zc riewfcr Cwwr J. WKlUWi
ZACZI Zddwy Ztheif Ltd. <NUll> <NLU>
*
«1 1 m . . ‘ ¦ >

Обратите внимание на то, что а этой строке оказались заполненными только столбцы CustomeriD И CompanyName, ПОСКОЛЬКУ В нашей Программе ИСПОЛЬЗуЮТСЯ только этн столбцы. Остальные столбцы являются пустыми {на самом деле, с точки зрения SQL в ннх содержится значение null). Может показаться, что для заполнения, скажем, столбца Contact Name потребуется просто включить в программу следующую строку:

thisRow['ContactName'] = 'Zylla Zithers';

Это, одиако, не все, что потребуется сделать. При выполнении первоначального запроса мы создали объект BataSet, указав только два столбца — CustomeriD н CompanyName:

SqlDataAdapter thisAdapter = now SqlDataAdapter;

'SELECT CustomeriD, CompanyName FROM Customers', thisConnection);

Обращение к столбцу contactName приведет к возникновению ошибки, поскольку у построенного нами объекта Dataset такой столбец отсутствует. Можем исправить возникшую ситуацию, добавив столбец ContactName:

SqlDataAdapter thisAdapter = new SqlDataAdapter (

'SELECT CustomeriD, ContactName, CompanyName FROM Customers', thisConnection);

Либо можно выбрать все имеющиеся в таблице Customers столбцы с помощью следующей команды

SqlDataAdapter thisAdapter = new SqlDataAdapter!

“SELECT * FUQM Customers', thietannection);
536

Глава 19

Звездочка (*) в SQL-команде select используется для обозначения всех столбцов, имеющихся в таблице; внеся такое изменение вы получите возможность осуществлять доступ к значениям любых столбцов, хранящихся в БД. Однако следует отметить, что извлечение всех столбцов, если вы работаете с двумя или тремя из них, является неэффективным и этого следует избегать.

Если бы вы попытались запустить программу из предыдущего примера более одного раза, то получили бы следующее сообщение:

Unhandled Exception: System.Data.SqICIient.SqlException:

(Необрабатываемая исключительная ситуация: System.Data,SqICIient.SqlException:)

Violation of PRIMARY KEY constraint 'PK_Customers’.

(Нарушение ограничений первичного ключа ‘PK^Customers’.)

Cannot insert duplicate key in object ‘Customers’.

(He могу вставить повторяющийся ключ в объект ‘Customers’.) '

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

Внесем изменения в логику программы с тем, чтобы перед вставкой строки осуществлялся ее поиск. Семейство Rows объекта DataTabie обладает методом Find о и оказывается чрезвычайно полезным в данной ситуации. Давайте изменим логику программы, которая окружает процедуру добавления строки, с тем чтобы вместо подсчета количества строк можно было использовать метод Findo. Ниже приводится полный исходный текст программы {среди программ, предназначенных для переписи, этот пример носит название DataAddFindExampie); далее мы перейдем к детальному обсуждению этой программы:

usingr System; -

using System,Data; П Использование пространства (таен ADO.NET

usin® System.Data.SqlClient; П Использование провайдера

П Задание строки соединения специально для SQL Server Sqiconnection thisConnection = new SqlConnection<

9'Data Source^(local);Integrated 6ecurity=SSPl;* +

“Initial Cataloq=northwind');

П Установка соединения

Chi sConnect ion.Open(); .

II Создание объекта DataAdapter для внесения )! изменений и выполнения других операций SqlDataAdapter thieAdapter - new SqlDataAdapter(

¦SELECT CuetoraerlD, CorapanyName FROM Customers', thisConnection);

И Создание объекта CommandBuilder дня формирования SQL-команд SqlCommandBuilder thisBuilder = new SqlComnumdBuilder(thisAdapter);

II данных .НЕТ SQL Server

class DataAddFindExamp1e

public static void Main() (
Доступ к данным посредством ADO.NET__________________________________________________________537

Н Создание объекта DataSet, предназначенного для // хранения свяэаннкх таблиц, строк и столбцов DataSet thisDataSet - new DataSet ()i

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

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

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

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

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