Добавить в цитаты Настройки чтения

Страница 392 из 642

  Console.WriteLine("***** Info about your co

  Console.WriteLine($@"Database location:

    {co

  Console.WriteLine($"Database name: {co

                                       // Имя базы данных

  Console.WriteLine($@"Timeout:

    {co

  Console.WriteLine($"Co

    {co

}

Большинство этих свойств понятно без объяснений, но свойство State требует специального упоминания. Ему можно присвоить любое значение из перечисления Co

public enum Co

{

  Broken,

  Closed,

  Co

  Executing,

  Fetching,

  Open

}

Однако допустимыми значениями Co

Работа с объектами Co

Работа со строками подключения в коде может быть утомительной, т.к. они часто представлены в виде строковых литералов, которые в лучшем случае трудно обрабатывать и контролировать на предмет ошибок. Совместимые с .NET Core поставщики данных поддерживают объекты построителей строк подключения, которые позволяют устанавливать пары "имя-значение" с применением строго типизированных свойств. Взгляните на следующую модификацию текущего кода:

var co

{

  InitialCatalog = "AutoLot",

  DataSource = ".,5433",

  UserID = "sa",

  Password = "P@ssw0rd",

  Co

};

  co

    co

В этой версии создается экземпляр класса SqlCo

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

Теперь, когда вы лучше понимаете роль объекта подключения, следующей задачей будет выяснение, каким образом отправлять SQL-запросы базе данных. Тип SqlCommand (производный от DbCommand) является объектно-ориентированным представлением SQL-запроса, имени таблицы или хранимой процедуры. Тип команды указывается с использованием свойства CommandType, которое принимает любое значение из перечисления CommandType:

public enum CommandType

{

  StoredProcedure,

  TableDirect,

  Text // Стандартное значение.

}

При создании объекта команды SQL-запрос можно указывать как параметр конструктора или устанавливать свойство CommandText напрямую. Кроме того, когда создается объект команды, необходимо задать желаемое подключение. Его также можно указать в виде параметра конструктора либо с применением свойства Co

// Создать объект команды посредством аргументов конструктора.

string sql =

    @"Select i.id, m.Name as Make, i.Color, i.Petname

         FROM Inventory i

         INNER JOIN Makes m on m.Id = i.MakeId";

SqlCommand myCommand = new SqlCommand(sql, co

// Создать еще один объект команды через свойства.

SqlCommand testCommand = new SqlCommand();

testCommand.Co

testCommand.CommandText = sql;

Учтите, что в текущий момент вы еще фактически не отправили SQL-запрос базе данных AutoLot, а только подготовили состояние объекта команды для будущего использования.

В табл. 21.5 описаны некоторые дополнительные члены типа DbCommand.

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

После установления активного подключения и объекта команды SQL следующим действием будет отправка запроса источнику данных. Как вы наверняка догадались, это можно делать несколькими путями. Самый простой и быстрый способ получения информации из хранилища данных предлагает тип DbDataReader (реализующий интерфейс IDataReader). Вспомните, что объекты чтения данных представляют поток данных, допускающий только чтение в прямом направлении, который возвращает по одной записи за раз. Таким образом, объекты чтения данных полезны, только когда лежащему в основе хранилищу данных отправляются SQL-операторы выборки.