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

 

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

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

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

672 Глава 13 • Доступ к данным при помощи ADO.NET
единение с базой данных не закрывается автоматически, а сохраняется активным до тех пор, пока мы не закроем его явным образом.
Проиллюстрируем все вышесказанное на примере. Предположим, что в нашем распоряжении есть класс, который производит простой запрос к нашей базе данных Cars при помощи метода Ol e-DbComniar'id,ExecuteReader(). Этот метод возвратит объект класса OleDbDataReader, после чего мы можем воспользоваться методом для записи возвращаемых из базы данных записей в стандартный поток ввода-вывода:
public class 015DbCR (
static void Main(strlng[] args) (
I/ Первый шаг; устанавливаем соединение
OleObConnection cn - new OleDbConnectlonO; cn.Connect!onStrlng - "Provldet—SQLOLEDB.1:" +
"Integrated Security-SSPI;" +
"Persist Security Info-False:" +
"lnitial Catalog-Cars:" +
"Data Source-BIGMANU:"; сл.ОрепО:
Il Второй шаг: создаем команду SQL
string strSQL - "SELECT Make FROM Inventory WHERE Color-'Red"'; 01 eDbCortmand щуСоптшапа = new 01eDbCommand(strSQL, cn);
Il Третий шаг: получаем объект OleObDataReader при помощи нетода
ExecuteReader()
OleDbDataFieader myDataReader; myDataReader - myCommand. ExecuteReaderO;
Il Четвертый шаг: проходим циклон по всем возращаенын данным
while (myDataReader. Read О)
{
Console. WriteLineC'Red car: " + myDataReader ["Make"] .ToSt ring O ):
}
myDataReader.Cl 05eO: cn .CloseO;
}
}
В результате будет выведен список всех автомобилей в базе данных Cars (рис. 13.25).
11I)IIIsJSBiJaIiJUJJ andp1 '
Keil cdr: Coll ШШШ
Kt? л с л г: BHU ¦


Fl Г ш
Рис. 13.25. Класс OleDbDataReader в действии
Поскольку объекты DataReader (вскоре мы познакомимся и с другими их разновидностями) обеспечивают лишь однонаправленный поток данных только для
чтения, перемещаться по этим данным в приложении невозможно. Все, что мы
Управляемый провайдер OLE CB 673
можем сделать, — считать каждую запись, возвращаемую запросом, и інініль о вать ее в нашем приложении:
// Получаем значение из столбца Hake-Console. WriteLineC"Red Саг: (0}". myOataReader["Make"]ToString()):
После того как DataReader станет нам больше не нужен, не забудем явным образом закрыть соединение с базой данных. Это делается при помощи метода
OleDbDataReader.CloseO. Конечно же, помимо методов ReadO и CloseO, в классе Ol eObDataReader предусмотрены и другие методы, например для получения значения из указанного столбца в нужном нам формате (GetBoolean(), GetByte{) и т. д.). Кроме того, можно отметить свойство FieldCount, которое возвращает количество столбцов в текущей записи.
Код приложения OlcDhuutaReader можно найти в подкаталоге Chapter 13.
Подключение к базе данных Access
Мы с вами уже умеем обращаться к базам данных SQL Server. Настало время узнать, как можно подключаться к другому распространенному виду баз данных — базам данных MS Access. Чтобы упростить себе задачу, мы просто изменим уже созданное только что нами приложение OleDbDataReader таким образом, чтобы считывать данные из базы данных Access (файла cars.mdb).
Как в классическом ADO, в ADO.NET, чтобы подключиться к другому источнику данных из уже готового кода, обычно достаточно лишь поменять содержимое строки подключения. Всего нам потребуется внести два изменения; в строке Provider поместить ссылку на JET вместо SQLOLEDBh в имени источника данных указать путь к файлу mdb:
// Изменяем источник данных в строке подключения:
OleDbConnection en = new OleDbConnectі on();
cn.ConnectionString = "Provider=Microsoft. Jet.OLEDB.4.0:" + <a"data source = D:\Chapter 13\Access 0B\cars.mdb"; cn.0pen():
После того как соединение с базой данных установлено, мы можем выполнять все необходимые операции точно так же, как и в предыдущем варианте нашего приложения. Единственное, о чем необходимо помнить: при подключении к базе данных Access можно использовать только типы из пространства имен System. Da -ta.OleDb. Помните, что System. Data.SqICl Tent - только для баз данных SQL Server!
Выполнение хранимых процедур
Одно из важнейших ргчпенmi, которые вам придется принять при создании распределенного приложения, — где будет реализована бизнес-логика. Один из возможных подходов — реализовать библиотеки кода с возможностью повторного использования (СОМ-компонент), которые будут управляться каким-либо вспомогательным процессом вроде Windows 2000 Component Services Manager. Другой подход — поместить бизнес-логику непосредственно на источник данных, реализовав ее в виде хранимых процедур (еще один распространенный подход — использовать одновременно и то и другое)
Хранимая процедура - это набор команд SQL, который в виде объекта со своим именем хранится в базе данных. Хранимая процедура может возвращать набор
674 Глава 13 * Доступ к данным при помощи .ADO.NET
строк (или просто значений указанных нами типов данных), а также принимать любое количество обязательных и необязательных параметров. По своему назначению хранимая процедура очень похожа на обычную функцию, например, в С#, с теми очевидными отличиями, которые вытекают из сущности хранимой процедуры как объекта базы данных.
Предыдущая << 1 .. 266 267 268 269 270 271 < 272 > 273 274 275 276 277 278 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100