Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 570

Эндрю Троелсен

3. Вызвать ExecuteReader() для сконфигурированного объекта команды.

4. Обработать каждую запись, используя метод Read() объекта чтения данных.

Для начала создайте новое консольное приложение с названием CarsDataReader. Нашей целью является открытие соединения (с помощью объекта SqlConnection) а отправка SQL-запроса (с помощью объекта SqlCommand) для получения всех записей из таблицы Inventory базы данных Cars. Затем мы используем SqlDataReader, чтобы напечатать результаты с помощью индексатора типа. Вот соответствующий программный код Main(), за которым следует его анализ.

class Program {

 static void Main(string[] args) {

  Console.WriteLine("***** Забавы с чтением данных *****\n");

  // Создание и открытие соединения.

  SqlConnection cn = new SqlConnection();

  cn.ConnectionString = "uid=sa;pwd=;Initial Catalog=Cars;Data Source=(local)";

  cn.Open();

  // Создание объекта SQL-команды.

  string strSQL = "Select * From Inventory";

  SqlCommand myCommand = new SqlCommand(strSQL, cn);

  // Получение объекта чтения данных в стиле ExecuteReader().

  SqlDataReader myDataReader;

  myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

  // Цикл по результатам.

  while (myDataReader.Read()) {

  Console.WriteLine("-› Марка – {0}, имя – {1}, цвет – {2}.",

   myDataReader["Make"].ToString().Trim(),

   myDataReader["PetName"].ToString().Trim(),

   myDataReader["Color"].ToString().Trim());

  }

  // Поскольку был указан CommandBehavior.CloseConnection,

  // для соединения нет необходимости явно вызывать Close().

  myDataReader.Close();

 }

}

Работа с объектами соединения

Первым шагом в работе с поставщиком данных является создание соединения с источником данных, для чего мы используем объект соединения (который, как вы помните, получается из Disconnection). Типы соединения .NET получают на вход форматированную строку соединения, содержащую набор пар имен и значений, разделенных точками с запятой. Эта информация используется для идентификации машины, с которой требуется установить соединение, параметров безопасности, имени базы данных на удаленной машине и других данных, связанных с конкретным поставщиком данных.

По предыдущему программному коду вы можете заключить, что имя Initial Catalog (исходный каталог) дает ссылку на базу данных, с которой вы пытаетесь соединиться (Pubs, Northwind, Cars и т.д.). Имя Data Source (Источник данных) идентифицирует имя машины, поддерживающей базу данных (для простоты здесь предполагается, что для администраторов локальной системы никакого пароля не требуется).

Замечание. Чтобы узнать больше о парах имен и значений для той конкретной СУБД, которую используете вы, в документации .NET Framework 2.0 SDK найдите и прочитайте описание свойства ConnectionString объекта соединения для вашего поставщика данных.

После создания строки соединения само соединение с СУБД устанавливается с помощью вызова Open(). В дополнение к ConnectionString, Open() и Close() объект соединения предлагает еще целый ряд членов, которые позволяют настроить дополнительные параметры соединения, например, такие, как время ожидания и свойства транзакций. Описания некоторых членов базового класса DbConnection предлагаются в табл. 22.6.