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

С# - Ватсон К.

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


at DataReaderSqlExample.Main() in c:\begsharp\chapter19\dalareaderexample\ datareaderexample.cs:line 15

Данное сообщение свидетельствует о том, что программа не может установить соединение с указанным SQL Server за приемлемое, время. Убедитесь в том, что имя сервера в строке соединения не содержит ошибок.

Отправка запроса (SQL-команды)

На следующем этапе необходимо создать командный объект и передать ему SQL-команду для выполнения операции с базой данных (например, для извлечения некоторых данных). Вот код, который позволяет осуществить это:

SqlCommand thisCommand = thisConnection.CreateCommandO ;

thisCoirmand.CominandText = 'SELECT CuatoircrlD, CompanyName from Customers';

У объекта соединения имеется метод createcommandо, предназначенный для создания команды, привязанной к установленному соединению, именно это и используется для получения командного объекта. Сама команда присваивается свойству командного объекта commandText. Нам требуется получить список идентификаторов клиентов и имен компаний, хранящихся в базе данных Northwind, в соответствии с этим создается команда SQL-запроса:

SELECT CustomeriD, CompanyName from Customers

Команда select — это SQL-команда, позволяющая извлекать данные нз одной или нескольких таблиц. Весьма распространенными являются ошибки, заключающиеся в неправильном наборе имен таблиц, что приводит к возникновению другой исключительной ситуации:

thisCoromand.CommandText = 'SELECT CustomeriD, CompanyName from Customer';

Стоп! В названии таблицы customers пропущена буква s. Это приводит к возникновению следующей исключительной ситуации:

Unhandled Exception: System.Data.SqlClient.SqlException: Invalid object name ‘Customer ...

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

Неправильное имя объекта ‘Customer’...)

Возможно, вы обратили внимание на то, что метод, сгенерировавший ошибку, называется ExecuteReader о; чтобы получить результаты, необходимо создать объект DataReader Н ВЫПОЛНИТЬ команду,
526

Глава 19

Считывание результатов с помощью объекта DataReader

Объект DataReader — это простой, быстрый объект, предназначенный для немедленного получения результатов запроса. Он работает в режиме “только чтение”, поэтому его нельзя использовать для внесения изменении в данные — к рассмотрению данного вопроса мы перейдем после этого примера. Как видно нз предыдущего раздела, мы используем метод из последнего созданного нами объекта — командного объекта — для создания привязанного объекта, который потребуется нам в дальнейшем, в данном случае это объект DataReader:

SqlDataReader thisReader = thisCommand.ExecuteReader О;

Метод ExecuteReader о осуществляет выполнение SQL-команды в базе данных, поэтому все ошибки базы данных генерируются именно на этом этапе; этот же метод создает объект для считывания полученных результатов. Именно эгот объект вместе с содержащимися в нем результатами передается нашей программе; мы присваиваем его объекту thisReader.

Методы Read и Get

Есть несколько различных методов для извлечения результатов из объекта считывания. Метод ReadO объекта DataReader производит считывание отдельной строки данных, полученных в результате выполнения запроса, и возвращает значение true, если там еще есть непрочитанные данные, н false в противном случае. Поэтому мы организовываем цикл while для считывания данных с помощью метода Read!) и выводим результаты по мере их получения на каждой итерации:

while (thisReader.Read())

(

Console.WriteLinel'\t(0)\t(l}¦,

thisReader['CustomeriD'], thisReader['CompanyName']);

)

Пока метод Read!) возвращает значение true, функция Console.WriteLine('\t(0)\t(l)' выводит строки, каждая из которых состоит из двух элементов, разделенных символами табуляции (\t). Объект oleDbDataReader обладает свойством indexer (обсуждение индексаторов можно найти в главе 11). Индексатор позволяет обращаться к столбцам как к элементам массива по их именам: thieReader ['CustomeriD*], thisReader['CompanyName'), В результате ПРОИСХОДИТ ВЫВОД ЗИачеНИЙ CustomeriD И CompanyName:

ALFKI Alfreds Futterkiste

ANATR Ana Trujillo Ennprectactos у helados

Когда метод ReadO достигает последнего значения, он возвращает значение false и выполнение цикла while завершается.

Закрытие объектов Reader и Connection

Последним шагом является закрытие объектов, в число которых входят Reader и connection. У каждого их ннх имеется свой собственный метод, к которым мы обращаемся, перед тем как закончить выполнение программы:

thisReader.Close();

thisConnection,Close();

Вот н все, что касается осуществления доступа к одной таблице!
Доступ к данным посредством ADO.NET

527

Прантикум: пример с использованием Microsoft Access

Эта же программа с незначительными изменениями может использоваться для доступа к той же БД в версии Microsoft Access (nwind.mdb). Она располагается В директории C:\Program Files\Microaoft Viaual Studio Net\Common7\Tools\Bin, однако эту базу данных не следует использовать непосредственно — ее необходимо предварительно скопировать (например, во временную директорию с;\tmp\nwind.mdb), для того чтобы в любой момент вернуться к исходному варианту. Кроме того следует учитывать, что этот путь использовался в ранней версии Visual Studio, однако к моменту чтения данного раздела он мог измениться, в таком случае следует воспользоваться командой Search, если вы не смогли найти ее в указанном месте.
Предыдущая << 1 .. 238 239 240 241 242 243 < 244 > 245 246 247 248 249 250 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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