Язык программирования C#9 и платформа .NET5
3. Вызвать метод
на сконфигурированном объекте команды.ExecuteReader()4. Обработать каждую запись с применением метода
объекта чтения данных.Read()Для начала создайте новый проект консольного приложения по имени
и добавьте пакетAutoLot.DataReader. Ниже приведен полный код внутриMicrosoft.Data.SqlClient(с последующим анализом):Program.csusing System;using Microsoft.Data.SqlClient;Console.WriteLine("***** Fun with Data Readers *****\n");<b>// Создать и открыть подключение.</b>using (SqlConnection connection = new SqlConnection()){connection.ConnectionString =@" Data Source=.,5433;User Id=sa;Password=P@ssw0rd;Initial Catalog=AutoLot";connection.Open();// Создать объект команды SQL.string sql =@"Select i.id, m.Name as Make, i.Color, i.PetnameFROM Inventory iINNER JOIN Makes m on m.Id = i.MakeId";SqlCommand myCommand = new SqlCommand(sql, connection);// Получить объект чтения данных с помощью ExecuteReader().using (SqlDataReader myDataReader = myCommand.ExecuteReader()){// Пройти в цикле по результатам.while (myDataReader.Read()){Console.WriteLine($"-> Make: {myDataReader["Make"]},PetName: {myDataReader["PetName"]}, Color: {myDataReader["Color"]}.");}}}Console.ReadLine();Работа с объектами подключений
При работе с поставщиком данных первым делом понадобится установить сеанс с источником данных, используя объект подключения (производного от
типа). Объекты подключений .NET Core обеспечиваются форматированной строкой подключения, которая содержит несколько пар "имя-значение", разделенных точками с запятой. Такая информация идентифицирует имя машины, к которой нужно подключиться, требуемые настройки безопасности, имя базы данных на машине и другие специфичные для поставщика сведения.DbConnectionИз приведенного выше кода можно сделать вывод, что имя
относится к базе данных, с которой необходимо установить сеанс. ИмяInitial Catalogидентифицирует имя машины, где находится база данных. Здесь применяется строкаData Source, которая ссылается на хост-машину (точка соответствует"., 5433"), и порт 5433, который представляет собой порт контейнера Docker, отображенный на порт SQL Server. Если бы вы использовали другой экземпляр, то определили бы свойство какlocalhost. Например,имя_машины,порт\экземплярозначает, чтоMYSERVER\SQLSERVER2019— имя сервера, на котором функционирует SQL Server, что применяется стандартный порт и чтоMYSERVERпредставляет собой имя экземпляра. Если машина является локальной по отношению к разработке, тогда можете использовать для имени сервера точку (SQLSERVER2019) или маркер (.). В случае стандартного экземпляра SQL Server имя экземпляра не указывается. Скажем, если вы создаете базу данныхlocalhostв установленной копии Microsoft SQL Server, настроенной как стандартный экземпляр на вашем локальном компьютере, то могли бы применятьAutoLot."Data Source=localhost"Кроме того, можно указать любое количество конструкций, которые представляют учетные данные безопасности. Если
установлено вIntegrated Security, то для аутентификации и авторизации используется текущая учетная запись Windows.trueКогда строка подключения готова, можно вызывать метод
для установления подключения к базе данных. В дополнение к членамOpen(),ConnectionstringиOpen()объект подключения предоставляет несколько членов, которые позволяют конфигурировать дополнительные настройки подключения, такие как таймаут и транзакционная информация. В табл. 21.4 кратко описаны избранные члены базового классаClose().DbConnectionСвойства типа
обычно по своей природе допускают только чтение и полезны, только если требуется получить характеристики подключения во время выполнения. Когда необходимо переопределить стандартные настройки, придется изменить саму строку подключения. Например, в следующей строке подключения время таймаутаDbConnectionустанавливается равным 30 секундам вместо стандартных 15 секунд (для SQL Server):Connect Timeoutusing(SqlConnection connection = new SqlConnection()){connection.ConnectionString =@" Data Source=.,5433;User Id=sa;Password=P@ssw0rd;Initial Catalog=AutoLot;ConnectTimeout=30";connection.Open();}Следующий код выводит детали о переданной ему строке подключения
:SqlConnectionstatic void ShowConnectionStatus(SqlConnection connection){// Вывести различные сведения о текущем объекте подключения.
