Когда речь идет об обновлении существующей записи в таблице Inventory
string, который представляет любой оператор SQL, но в лучшем случае это сопряжено с риском.В идеале лучше иметь набор методов, которые позволяют вызывающему коду обновлять запись разнообразными способами. Тем не менее, определите для такой простой библиотеки доступа к данным единственный метод, который дает вызывающему коду возможность обновить дружественное имя указанного автомобиля:
public void UpdateCarPetName(int id, string newPetName)
{
OpenConnection;
// Получить идентификатор автомобиля для модификации дружественного имени.
string sql = $"Update Inventory Set PetName = '{newPetName}'
Where Id = '{id}'";
using (SqlCommand command = new SqlCommand(sql, _sqlConnection))
{
command.ExecuteNonQuery;
}
CloseConnection;
}
Работа с параметризированным и объектами команд
В настоящий момент внутри логики вставки, обновления и удаления для типа InventoryDal
CommandText). Параметризированные запросы также содействуют в защите против атак внедрением в SQL (хорошо известная проблема безопасности доступа к данным).Для поддержки параметризированных запросов объекты команд ADO.NET содержат коллекцию индивидуальных объектов параметров. По умолчанию коллекция пуста, но в нее можно вставить любое количество объектов параметров, которые отображаются на
@ (во всяком случае, когда применяется Microsoft SQL Server; не все СУБД поддерживают такую систему обозначений).Указание параметров с использованием типа DbParameter
Перед построением параметризированного запроса вы должны ознакомиться с типом DbParameter
DbParameter поддерживает несколько свойств, которые позволяют конфигурировать имя, размер и тип параметра, а также другие характеристики, включая направление движения параметра. Некоторые основные свойства типа DbParameter описаны в табл. 21.6.Давайте теперь посмотрим, как заполнять коллекцию совместимых с DBParameter
InventoryDal для использования параметров.Обновление метода GetCar
В исходной реализации метода GetCar
GetCar, создайте экземпляр SqlParameter с соответствующими значениями:SqlParameter param = new SqlParameter
{
ParameterName = "@carId",
Value = id,
SqlDbType = SqlDbType.Int,
Direction = ParameterDirection.Input
}
Значение ParameterName
ParameterDirection.Input) или он предназначен для возвращения данных из запроса (ParameterDirection.Output). Параметры также могут определяться как InputOutput или ReturnValue (возвращаемое значение, например, из хранимой процедуры).Модифицируйте строку SQL для использования имени параметра ("@carid"
"{id}"):string sql =
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT