Gerald McAuley Ответов: 1

Синтаксис Sql-запроса в C#?


Я пытаюсь выполнить запрос к таблице, но продолжаю получать ошибку:

The parameterized query '(@TourName char(8000))UPDATE ToursTbl SET Availability = (Availa' expects the parameter '@TourName', which was not supplied.


Я предполагаю, что это связано с тем, как я предоставил параметр @TourName. Вот мой код, какая-нибудь помощь??


for (int i = 0; i < bookedToursArray.Length; i++)
           {
               //command to update the number of available tours in the tours table
               SqlCommand cmd2 = new SqlCommand();
               cmd2.CommandText = "UPDATE ToursTbl SET Availability = (Availability-1) WHERE TourName = '@TourName'";
               cmd2.Parameters.Add("@TourName", SqlDbType.Char).Value = bookedToursArray[i];

               cmd2.Connection = conn;

               conn.Open();

               cmd2.ExecuteNonQuery();

               conn.Close();
           }


Что я уже пробовал:

Проблема, похоже, в моем синтаксисе

[no name]

"Проблема, кажется, в моем синтаксисе", - кажется, вы правы. Избавьтесь от одинарных кавычек и используйте вместо них AddWithValue.

1 Ответов

Рейтинг:
8

CHill60

Видишь линию

cmd2.CommandText = "UPDATE ToursTbl SET Availability = (Availability-1) WHERE TourName = '@TourName'";
При использовании параметризованных запросов для вас добавляются одинарные кавычки. Эта строка должна быть
cmd2.CommandText = "UPDATE ToursTbl SET Availability = (Availability-1) WHERE TourName = @TourName";
Ваша следующая проблема связана с
cmd2.Parameters.Add("@TourName", SqlDbType.Char).Value = bookedToursArray[i];
Не используйте Add - измените его на
cmd2.Parameters.AddWithValue("@TourName",bookedToursArray[i]);