Выбери любимый жанр
Мир литературы

Выбрать книгу по жанру

Фантастика и фэнтези

Детективы и триллеры

Проза

Любовные романы

Приключения

Детские

Поэзия и драматургия

Старинная литература

Научно-образовательная

Компьютеры и интернет

Справочная литература

Документальная литература

Религия и духовность

Юмор

Дом и семья

Деловая литература

Жанр не определен

Техника

Прочее

Драматургия

Фольклор

Военное дело

Последние комментарии
Сергей2018-11-27
Не книга, а полная чушь! Хорошо, что чит
К книге
Lynxlynx2018-11-27
Читать такие книги полезно для расширени
К книге
Leonika2016-11-07
Есть аналоги и покрасивее...
К книге
Важник2018-11-27
Какое-то смутное ощущение после прочтени
К книге
Aida2018-11-27
Не книга, а полная чушь! Хорошо, что чит
К книге

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 398


398
Изменить размер шрифта:

Модифицируйте строку SQL для использования имени параметра (

"@carid"
) вместо интерполированной строки C# (
"{id}"
):

string sql =

  @"SELECT i.Id, i.Color, i.PetName,m.Name as Make

        FROM Inventory i

        INNER JOIN Makes m on m.Id = i.MakeId

        WHERE i.Id = @CarId";

Последнее обновление связано с добавлением нового объекта параметра в коллекцию

Parameters
объекта команды:

command.Parameters.Add(param);

Обновление метода DeleteCar()

Аналогично в исходной реализации метода

DeleteCar()
применяется интерполяция строк С#. Чтобы модифицировать этот метод, создайте экземпляр
SqlParameter
с надлежащими значениями:

SqlParameter param = new SqlParameter

{

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  ParameterName = "@carId",

  Value = id,

  SqlDbType = SqlDbType.Int,

  Direction = ParameterDirection.Input

};

Обновите строку SQL для использования имени параметра

("@ carId"
):

string sql = "Delete from Inventory where Id = @carId";

В заключение добавьте новый объект параметра в коллекцию

Parameters
объекта команды:

command.Parameters.Add(param);

Обновление метода UpdateCarPetName()

Метод

UpdateCarPetName()
требует предоставления двух параметров: одного для
Id
автомобиля и еще одного для нового значения
PetName
. Первый параметр создается в точности как в предыдущих двух примерах (за исключением отличающегося имени переменной), а второй параметр обеспечивает отображение на тип
NVarChar
базы данных (тип поля
PetName
из таблицы
Inventory
). Обратите внимание на установку значения
Size
. Важно, чтобы этот размер совпадал с размером поля базы данных, что обеспечит отсутствие проблем при выполнении команды:

SqlParameter paramId = new SqlParameter

{

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  ParameterName = "@carId",

  Value = id,

  SqlDbType = SqlDbType.Int,

  Direction = ParameterDirection.Input

};

SqlParameter paramName = new SqlParameter

{

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  ParameterName = "@petName",

  Value = newPetName,

  SqlDbType = SqlDbType.NVarChar,

  Size = 50,

  Direction = ParameterDirection.Input

};

Модифицируйте строку SQL для применения параметров:

string sql = $"Update Inventory Set PetName = @petName Where Id = @carId";

Последнее обновление касается добавления новых параметров в коллекцию

Parameters
объекта команды:

command.Parameters.Add(paramId);

command.Parameters.Add(paramName);

Обновление метода InsertAuto()

Добавьте следующую версию метода

InsertAuto()
, чтобы задействовать объекты параметров:

public void InsertAuto(Car car)

{

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  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",