Однако допустимыми значениями 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) является объектно-ориентированным представлением SQL-запроса, имени таблицы или хранимой процедуры. Тип команды указывается с использованием свойства 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). Вспомните, что объекты чтения данных представляют поток данных, допускающий только чтение в прямом направлении, который возвращает по одной записи за раз. Таким образом, объекты чтения данных полезны, только когда лежащему в основе хранилищу данных отправляются SQL-операторы выборки.Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT