Задать вопрос
@Nikita_Kotov228

Почему при нажатии кнопки удаления выходит ошибка типа: «ошибка синтаксиса в инструкции from»?

Привет! Я ввожу код товара в текстбокс, после чего нажимаю кнопку удалить, у меня открывается код с ошибкой. Помогите пожалуйста, первый раз такое делаю. Выделяет строчку "com.ExecuteNonQuery();". Код:
private void buttonDelete_Click(object sender, EventArgs e)
        {
            int code1 = Convert.ToInt32(textBox1.Text); //создаём переменную int и берём её значение из текстабока1 (код_товора)
            //переменная, которая хранит SQL запрос
            string query = "DELETE FROM DataBase WHERE Код = " + code1; //подставляется значение переменной код
            OleDbCommand com = new OleDbCommand(query, Connection); //создаём объект класса, подставляем сам запрос и соединение с базой (2 аргумента)
            com.ExecuteNonQuery(); //исполнение запроса
            MessageBox.Show("Данные о товаре удалены!");
            this.dataBaseTableAdapter.Fill(this.sweet_Tooth2DataSet.DataBase);//обновление таблицы
        }
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Скорее всего Database - зарезервированное слово. Назовите таблицу по другому
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@cicatrix
было бы большой ошибкой думать
Это не код, это огромная дыра в безопасности!
Вот, почитайте на досуге.
Database - 'это название таблицы такое? И в ней есть поле с кириллическим названием Код?
А в текстовое поле число вводится? А если текст ввести, что будет?
А если я туда введу 1=1; DROP TABLE Database; что будет?
Ответ написан
MANAB
@MANAB
Разрабатываю на C#: Web, Desktop, Gamedev
В таблице точно колонка с именем 'код' по-русски, или может все таки 'Code'?
Ну и стоит делать хотя бы так:
using (OleDbCommand cmd = Connection.CreateCommand())
{
     cmd.CommandText = 
              "DELETE FROM DataBase WHERE Code = @code";

           // add named parameters
           cmd.Parameters.AddRange(new OleDbParameter[]
           {
               new OleDbParameter("@code", code1)
           });

           // execute
           cmd.ExecuteNonQuery();
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы