Язык программирования C#9 и платформа .NET5
Часть 398 из 642 Информация о книге
Модифицируйте строку SQL для использования имени параметра (
) вместо интерполированной строки C# ("@carid"):"{id}"string sql =@"SELECT i.Id, i.Color, i.PetName,m.Name as MakeFROM Inventory iINNER JOIN Makes m on m.Id = i.MakeIdWHERE i.Id = @CarId";Последнее обновление связано с добавлением нового объекта параметра в коллекцию
объекта команды:Parameterscommand.Parameters.Add(param);Обновление метода DeleteCar()
Аналогично в исходной реализации метода
применяется интерполяция строк С#. Чтобы модифицировать этот метод, создайте экземплярDeleteCar()с надлежащими значениями:SqlParameterSqlParameter param = new SqlParameter{ParameterName = "@carId",Value = id,SqlDbType = SqlDbType.Int,Direction = ParameterDirection.Input};Обновите строку SQL для использования имени параметра
):("@ carId"string sql = "Delete from Inventory where Id = @carId";В заключение добавьте новый объект параметра в коллекцию
объекта команды:Parameterscommand.Parameters.Add(param);Обновление метода UpdateCarPetName()
Метод
требует предоставления двух параметров: одного дляUpdateCarPetName()автомобиля и еще одного для нового значенияId. Первый параметр создается в точности как в предыдущих двух примерах (за исключением отличающегося имени переменной), а второй параметр обеспечивает отображение на типPetNameбазы данных (тип поляNVarCharиз таблицыPetName). Обратите внимание на установку значенияInventory. Важно, чтобы этот размер совпадал с размером поля базы данных, что обеспечит отсутствие проблем при выполнении команды:SizeSqlParameter paramId = new SqlParameter{ParameterName = "@carId",Value = id,SqlDbType = SqlDbType.Int,Direction = ParameterDirection.Input};SqlParameter paramName = new SqlParameter{ParameterName = "@petName",Value = newPetName,SqlDbType = SqlDbType.NVarChar,Size = 50,Direction = ParameterDirection.Input};Модифицируйте строку SQL для применения параметров:
string sql = $"Update Inventory Set PetName = @petName Where Id = @carId";Последнее обновление касается добавления новых параметров в коллекцию
объекта команды:Parameterscommand.Parameters.Add(paramId);command.Parameters.Add(paramName);Обновление метода InsertAuto()
Добавьте следующую версию метода
, чтобы задействовать объекты параметров:InsertAuto()public void InsertAuto(Car car){OpenConnection();// Обратите внимание на "заполнители" в запросе SQL.string sql = "Insert Into Inventory" +"(MakeId, Color, PetName) Values" +"(@MakeId, @Color, @PetName)";// Эта команда будет иметь внутренние параметры.using (SqlCommand command = new SqlCommand(sql, _sqlConnection)){// Заполнить коллекцию параметров.SqlParameter parameter = new SqlParameter{ParameterName = "@MakeId",Value = car.MakeId,SqlDbType = SqlDbType.Int,Direction = ParameterDirection.Input};command.Parameters.Add(parameter);parameter = new SqlParameter{ParameterName = "@Color",Value = car.Color,SqlDbType = SqlDbType. NVarChar,Size = 50,Direction = ParameterDirection.Input};command.Parameters.Add(parameter);parameter = new SqlParameter{ParameterName = "@PetName",