Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 274

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 268 269 270 271 272 273 < 274 > 275 276 277 278 279 280 .. 320 >> Следующая

// Запускаем хранимую процедуру на выполнение myCommand.ExecuteNonOuery;
// Выводим результат
Console.WriteLine!"Stored Proc Info:"):
Console.WriteLineC'Car ID: " + myCommand.Parameters["@carID"].Value: Console.WriteLine("PetName: " + myCommand.Parameters["@petName"].Value):
Результат работы программы представлен на рис. 13.26.
давш!Ш!1:Ешгштн&- _.п.х.
Рис. 13.26. Запуск хранимой процедуры Код приложения OleDbStoredProc можно найти в подкаталоге Chapter 13.
Тип OleDbDataAdapter
К этому моменту мы уже узнали, как подключиться к источнику данных при помощи класса OleDbConnection, выполнить команду SQL, используя типы Ol eDbCom-inand и OleDbParameter, и получить однонаправленный поток данных при помощи OleDbDataReader. Всего этого вполне достаточно для выполнения хранимой процедуры или перенаправления потока данных из базы данных в поток вывода. Однако очень часто требуется заполнить полученными с сервера данными объект DataSet и выполнить с ними определенные операции. Наиболее гибкий способ, который позволяет это сделать,—использование класса 01 eDbDataAdapter.
Основное назначение этого класса — извлечь информацию из источника данных и заполнить ею объект DataTable в DataSet при помощи метода OleDbDataAdapter. Fi 11 О. Метод Fi 11 () многократно перегружен, вот два наиболее часто используемых варианта (возвращаемое значение int позволяет получить информацию о количестве записей, полученных из источника данных):
Jl Заполняем объект DataSet данными, лопученныни из таблицы на источнике данных // с указанный именем:
public int Fi11(DataSet yourDS. string tableName);
Il Сноеа заполняем данными, но только теми, которые находятся в указанных нами
,// границах
ipublic int Fi11(DataSet yourDS. string tableName. int slartRecord, int maxRecord);
Управляемый провайдер OLE DB 677
Конечно, перед тем как вызывать этот метод, нам потребуется уже созданный oobeKTOleDbDataAdapter.KoHCTpyKTopOleDbDataAdapterTaKxeMHoroKpaTHoneperpy-жен, но обычно необходимо указать информацию о параметрах подключения к базе данных и команду SELECT на языке SQL, которая будет использована для заполнения Dat.л ГаЬ 1е.
Ol eDbDataAdapter позволяет не только заполнять объект DataTable внутри DataSet данными, полученными из источника, но и помещать измененные данные обратно в источник данных при помощи стандартных кок:a;-iu SQL. В табл. 13.18 представ-ленычленыкласса01еОЬОа1аАаар1ег,которыепозволяютэтосделать,атакженеко-торые другие важнейшие члены этого класса.
Таблица 13.18. Наиболее важные члены OleDbDataAdapter Член Описание
DeleteCommand Используются для определения того, какая именно команда SQL будет
передана на источник данных при вызове метода Update(). Каждое из этих свойств определяется при помощи объектов OleDbCommand
UpdateCommand
RIlO Заполняет указанную таблицу в DataSet определенным пользователем
количеством записей
GetFillPararnetersQ Возвращает все параметры, использованные при выполнении запроса SELECT к источнику данных
UpdateC) Вызывает соответствующие команды INSERT, UPDATE, DELETE к источнику
данных для каждой вставленной, измененной или удаленной строки _' в таблице объекта DataSet_
При использовании свойств DeleteCoirmand, InsertCoirmand, UpdateCormiand, SelectComTflnd объект OleDbDataAdapter автоматически переводит внесенные нами изменения в таблицу данных в DataSet в соответствующие команды на языке SQL, сохраняя, таким образом, внесенные нами в DataSet изменения в источнике данных. Эти свойства позволяют определить соответствующие команды SQL в деталях. Однако прежде чем мы приступим к их рассмотрению, мы познакомимся с тем, как можно использовать в коде программы для заполнения данны-
ми объекта DataSet.
Заполнение данными объекта DataSet при помощи OleDbDataAdapter
Заполнить данными объект DataSet (в котором имеется только одна таблица) при помощи OleDbDataAdapter можно, если использовать следующий код:
рjl:lt.: class ^yUleDoDaUWaptsr {
Il Шаг 1: открываем соединение с базой данных Cars
uleDbConnection cn = new OleDbConnectiont); cn.ConnectionString =
"ProvideT=SQLQLEDB.1;" + "lntegrated securlty-SSPt;" + "Persist Security Info=False;" + "Initial Catalog=Cars:" +
678 Глава 13 • Доступ к данным при помощи ADO.NET
"Data Soiirce-BIGMANU;";
сл.Орел О:
// Шаг 2: Создаем OleDbDataAdapter при помощи команды SELECT string sqlSELECT = "SELECT * FROM Inventory"; OleDbDataAdapter dAdapt = new 01eDbDataAdapter(sqlSELECT, en);
Il Шаг 3: Создаем и заполняем объект OataSet, а потом закрываем соединение
DataSet myDS = new DataSet("CarsDataSet");
try
І
dAdapt.FiIHmyDS. "Inventory");
:
catcnCtxception ex) {
Console.WriteLine(ex.Message):
) ¦
finally {
cn.CloseO;
}
II Вспомогательная функция для вывода содержимого таблицы
PrintTable(myDS): return 0;
}
Обратите внимание, что создание таблицы Inventory (объекта DataTable) было совсем непохоже на то, как мы делали это в первой части главы. Вместо того чтобы создавать OataTabl e из отдельных элементов, а затем добавлять ее в OataSet, мы просто указали имя создаваемой таблицы (Inventory) в качестве второго параметра для метода Fi Все остальное этот метод сделал автоматически: создал объект DataTable, присвоил ему указанное нами имя, создал внутри DataTable объекты DataColU1HiI и заполнил таблицу строками из источника данных, полученных в результате выполнения запроса SELECT. Команда SELECT была передана источнику данных как параметр конструктора OlenbDataAcspier;
Предыдущая << 1 .. 268 269 270 271 272 273 < 274 > 275 276 277 278 279 280 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100