Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Console.WriteLine("***** Info about your connection *****");
Console.WriteLine($@"Database location:
{connection.DataSource}"); // Местоположение базы данных
Console.WriteLine($"Database name: {connection.Database}");
// Имя базы данных
Console.WriteLine($@"Timeout:
{connection.ConnectionTimeout}"); // Таймаут
Console.WriteLine($"Connection state:
{connection.State}n"); // Состояние подключения
}
Большинство этих свойств понятно без объяснений, но свойство
State
ConnectionState
public enum ConnectionState
{
Broken,
Closed,
Connecting,
Executing,
Fetching,
Open
}
Однако допустимыми значениями
ConnectionState
ConnectionState.Open
ConnectionState.Connecting
ConnectionState.Closed
ConnectionState.Closed
Работа с объектами ConnectionStringBuilder
Работа со строками подключения в коде может быть утомительной, т.к. они часто представлены в виде строковых литералов, которые в лучшем случае трудно обрабатывать и контролировать на предмет ошибок. Совместимые с .NET Core поставщики данных поддерживают объекты построителей строк подключения, которые позволяют устанавливать пары "имя-значение" с применением строго типизированных свойств. Взгляните на следующую модификацию текущего кода:
var connectionStringBuilder = new SqlConnectionStringBuilder
{
InitialCatalog = "AutoLot",
DataSource = ".,5433",
UserID = "sa",
Password = "P@ssw0rd",
ConnectTimeout = 30
};
connection.ConnectionString =
connectionStringBuilder.ConnectionString;
В этой версии создается экземпляр класса
SqlConnectionStringBuilder
ConnectionString
Работа с объектами команд
Теперь, когда вы лучше понимаете роль объекта подключения, следующей задачей будет выяснение, каким образом отправлять SQL-запросы базе данных. Тип
SqlCommand
DbCommand
CommandType
CommandType
public enum CommandType
{
StoredProcedure,
TableDirect,
Text // Стандартное значение.
}
При создании объекта команды SQL-запрос можно указывать как параметр конструктора или устанавливать свойство
CommandText
Connection
// Создать объект команды посредством аргументов конструктора.
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, connection);
// Создать еще один объект команды через свойства.
SqlCommand testCommand = new SqlCommand();
testCommand.Connection = connection;
testCommand.CommandText = sql;
Учтите, что в текущий момент вы еще фактически не отправили SQL-запрос базе данных
AutoLot
В табл. 21.5 описаны некоторые дополнительные члены типа
DbCommand

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