Читаем Язык программирования C#9 и платформа .NET5 полностью

    CloseConnection;

  }

}


В то время как построение параметризированного запроса часто требует большего объема кода, в результате получается более удобный способ для программной настройки операторов SQL и достигается лучшая производительность. Параметризированные запросы также чрезвычайно удобны, когда нужно запускать хранимые процедуры.

Выполнение хранимой процедуры

Вспомните, что хранимая процедура представляет собой именованный блок кода SQL, сохраненный в базе данных. Хранимые процедуры можно конструировать так, чтобы они возвращали набор строк либо скалярных типов данных или выполняли еще какие-то осмысленные действия (например, вставку, обновление или удаление записей); в них также можно предусмотреть любое количество необязательных параметров. Конечным результатом будет единица работы, которая ведет себя подобно типичной функции, но только находится в хранилище данных, а не в двоичном бизнес-объекте. В текущий момент в базе данных AutoLot определена единственная хранимая процедура по имени GetPetName.

Рассмотрим следующий (пока что) финальный метод типа InventoryDal, в котором вызывается хранимая процедура GetPetName:


public string LookUpPetName(int carId)

{

  OpenConnection;

  string carPetName;

  // Установить имя хранимой процедуры.

  using (SqlCommand command = new SqlCommand("GetPetName", _sqlConnection))

  {

    command.CommandType = CommandType.StoredProcedure;

    // Входной параметр.

    SqlParameter param = new SqlParameter

    {

      ParameterName = "@carId",

      SqlDbType = SqlDbType.Int,

      Value = carId,

      Direction = ParameterDirection.Input

    };

    command.Parameters.Add(param);

    // Выходной параметр.

    param = new SqlParameter

    {

      ParameterName = "@petName",

      SqlDbType = SqlDbType.NVarChar,

      Size = 50,

      Direction = ParameterDirection.Output

    };

    command.Parameters.Add(param);

    // Выполнить хранимую процедуру.

    command.ExecuteNonQuery;

    // Возвратить выходной параметр.

    carPetName = (string)command.Parameters["@petName"].Value;

    CloseConnection;

  }

  return carPetName;

}


С вызовом хранимых процедур связан один важный аспект: объект команды может представлять оператор SQL (по умолчанию) либо имя хранимой процедуры. Когда объекту команды необходимо сообщить о том, что он будет вызывать хранимую процедуру, потребуется указать имя этой процедуры (в аргументе конструктора или в свойстве CommandText) и установить свойство CommandType в CommandType.StoredProcedure. (В противном случае возникнет исключение времени выполнения, т.к. по умолчанию объект команды ожидает оператор SQL.)

Далее обратите внимание, что свойство Direction параметра @petName установлено в ParameterDirection.Output. Как и ранее, все объекты параметров добавляются в коллекцию параметров объекта команды.

После того, как хранимая процедура, запущенная вызовом метода ExecuteNonQuery, завершила работу, можно получить значение выходного параметра, просмотрев коллекцию параметров объекта команды и применив соответствующее приведение:


// Возвратить выходной параметр.

carPetName = (string)command.Parameters["@petName"].Value;


К настоящему моменту вы располагаете простейшей библиотекой доступа к данным, которую можно задействовать при построении клиента для отображения и редактирования данных. Вопросы создания графических пользовательских интерфейсов пока не обсуждались, поэтому мы протестируем полученную библиотеку доступа к данным с помощью нового консольного приложения.

Создание консольного клиентского приложения

Добавьте к решению AutoLot.Dal новый проект консольного приложения (по имени AutoLot.Client) и ссылку на проект AutoLot.Dal. Ниже приведены соответствующие CLI-команды dotnet (предполагается, что ваше решение называется Chapter21_А11Projects.sin):


dotnet new console -lang c# -n AutoLot.Client -o .\AutoLot.Client -f net5.0

Перейти на страницу:

Похожие книги

Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Нил Форд , Билл де Ора , Майкл Хайгард

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT