Связный уровень ADO.NET

Связный уровень ADO.NET

Напомним, что связный уровень ADO.NET позволяет взаимодействовать с базой данных, используя объекты соединения, команд и чтения данных вашего поставщика данных. Вы уже использовали эти объекты в предыдущем примере DataProviderFactory, но давайте рассмотрим соответствующий процесс еще раз более подробно. Чтобы соединиться с базой данных и прочитать ее записи с помощью объекта чтения данных, необходимо выполнить следующие шаги

1. Разместить, настроить и открыть объект соединения.

2. Разместить и настроить объект команды, передав ему объект соединения в виде аргумента конструктора или с помощью свойства Connection.

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

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

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

class Program {

 static void Main(string[] args) {

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

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

  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();

 }

}