MonsterousByte Ответов: 2

Как использовать инструкцию delete в базовом приложении CRUD на языке C#?


Поэтому я пишу базовое приложение CRUD для практики, так как уже давно этого не делал. Я наткнулся на удаленную часть приложения CRUD и столкнулся с проблемой. У меня есть обозначенный в строке об ошибке с текстом "ошибка". Вот мой код

string query = "DELETE FROM Books WHERE Title=@" + deletetitletxtbox.Text;

    using (SqlConnection conn = new SqlConnection(connString))
    using (SqlCommand command = new SqlCommand(query, conn))
        {
            conn.Open();

            command.Parameters.AddWithValue("@title", deletetitletxtbox.Text);

            command.ExecuteScalar();//error here

            conn.Close();
        }
clear();

Ошибка, которую я получаю, - это "System.Data.SqlClient.SqlException: 'Must declare the scalar variable "@The".'" Итак, скажем, я хочу удалить столбец с названием "Главная книга". Эта ошибка появляется. Я занимаюсь этим уже некоторое время и был очень раздражен этим. Заранее приношу свои извинения, если это глупый вопрос.

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

Я пробовал искать на других сайтах, но безуспешно. Мне кажется, что все эти примеры не соответствуют той проблеме, которая у меня есть. Или, может быть, я смотрю на это неправильно. На данном этапе это трудно понять, так как мое суждение затуманено.

2 Ответов

Рейтинг:
2

F-ES Sitecore

string query = "DELETE FROM Books WHERE Title=@title";


"@title" - Это параметр, и вы даете параметру @title соответствующее значение здесь

command.Parameters.AddWithValue("@title", deletetitletxtbox.Text);


Следующий ExecuteScalar предназначен для команды, которая возвращает один столбец в одной строке. Оператор delete ничего не возвращает, поэтому вместо этого используйте ExecuteNonQuery, то есть когда вы не ожидаете никаких результатов.


Рейтинг:
1

Dave Kreskowiak

Ваш запрос неверен. Так и должно быть

string query = "DELETE FROM Books WHERE Title=@title";

Используете ли вы первичные ключи на своих столах? Если нет, то вам лучше привыкнуть к этому.