Страница 391 из 642
3. Вызвать метод ExecuteReader() на сконфигурированном объекте команды.
4. Обработать каждую запись с применением метода Read() объекта чтения данных.
Для начала создайте новый проект консольного приложения по имени AutoLot.DataReader и добавьте пакет Microsoft.Data.SqlClient. Ниже приведен полный код внутри Program.cs (с последующим анализом):
using System;
using Microsoft.Data.SqlClient;
Console.WriteLine("***** Fun with Data Readers *****n");
<b>// Создать и открыть подключение.</b>
using (SqlCo
{
co
@" Data Source=.,5433;User Id=sa;Password=P@ssw0rd;Initial Catalog=AutoLot";
co
// Создать объект команды SQL.
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
// Получить объект чтения данных с помощью ExecuteReader().
using (SqlDataReader myDataReader = myCommand.ExecuteReader())
{
// Пройти в цикле по результатам.
while (myDataReader.Read())
{
Console.WriteLine($"-> Make: {myDataReader["Make"]},
PetName: {myDataReader
["PetName"]}, Color: {myDataReader["Color"]}.");
}
}
}
Console.ReadLine();
Работа с объектами подключений
При работе с поставщиком данных первым делом понадобится установить сеанс с источником данных, используя объект подключения (производного от DbCo
Из приведенного выше кода можно сделать вывод, что имя Initial Catalog относится к базе данных, с которой необходимо установить сеанс. Имя Data Source идентифицирует имя машины, где находится база данных. Здесь применяется строка "., 5433", которая ссылается на хост-машину (точка соответствует localhost), и порт 5433, который представляет собой порт контейнера Docker, отображенный на порт SQL Server. Если бы вы использовали другой экземпляр, то определили бы свойство как имя_машины,портэкземпляр. Например, MYSERVERSQLSERVER2019 означает, что MYSERVER — имя сервера, на котором функционирует SQL Server, что применяется стандартный порт и что SQLSERVER2019 представляет собой имя экземпляра. Если машина является локальной по отношению к разработке, тогда можете использовать для имени сервера точку (.) или маркер (localhost). В случае стандартного экземпляра SQL Server имя экземпляра не указывается. Скажем, если вы создаете базу данных AutoLot в установленной копии Microsoft SQL Server, настроенной как стандартный экземпляр на вашем локальном компьютере, то могли бы применять "Data Source=localhost".
Кроме того, можно указать любое количество конструкций, которые представляют учетные данные безопасности. Если Integrated Security установлено в true, то для аутентификации и авторизации используется текущая учетная запись Windows.
Когда строка подключения готова, можно вызывать метод Open() для установления подключения к базе данных. В дополнение к членам Co
Свойства типа DbCo
using(SqlCo
{
co
@" Data Source=.,5433;User Id=sa;Password=P@ssw0rd;
Initial Catalog=AutoLot;Co
co
}
Следующий код выводит детали о переданной ему строке подключения SqlCo
static void ShowCo
{
// Вывести различные сведения о текущем объекте подключения.