NaeemSardar.ifish Ответов: 2

Как удалить данные в datagrid с помощью SQL - запроса в WPF


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

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

private void DeleteData_OnClick(object sender, RoutedEventArgs routedEventArgs)
{
    var selectedRow = MyDataGrid.SelectedItem;
    BookingRequest request = selectedRow as BookingRequest;
    long id = request.ID;
    con.Open();
    string query = "Delete from BookingRequest where ID ='"+ id +"'";
    SqlCommand sqlcmd = new SqlCommand(query, con);
    sqlcmd.ExecuteNonQuery();
    MessageBox.Show("Data deleted successfully");
    con.Close();
    Load();
}

Suvendu Shekhar Giri

Пожалуйста, поделитесь частью соответствующего кода, чтобы мы могли помочь.

Richard MacCutchan

Мы не можем решить эту проблему, так как вы не предоставили никакой полезной информации. Пожалуйста, укажите код, который вызывает ошибку, и точное сообщение об ошибке.

NaeemSardar.ifish

удачи вам счастливого кодирования

2 Ответов

Рейтинг:
2

NaeemSardar.ifish

private void DeleteData_OnClick(object sender, RoutedEventArgs routedEventArgs)
          {
              var selectedRow = MyDataGrid.SelectedItem;
              BookingRequest request = selectedRow as BookingRequest;
              long id = request.ID;
              con.Open();
              string query = "Delete from BookingRequest where ID ='"+ id +"'";
              SqlCommand sqlcmd = new SqlCommand(query, con);
              sqlcmd.ExecuteNonQuery();
              MessageBox.Show("Data deleted successfully");
              con.Close();
              Load();
                 }


Richard MacCutchan

Несколько вещей:
1. Вы должны использовать параметризованные запросы для SQL, чтобы избежать SQL-инъекции.
2. Не выдавайте сообщение об успешном выполнении, не проверив результат выполнения фактической команды SQL.
3. и хотя вы все еще не показали сообщение об ошибке, я подозреваю, что вы не можете привести DataGridRow к BookingRequest.
4. Пожалуйста, не оставляйте доп. информация как решение, используйте Улучшить вопрос ссылка выше, чтобы обновить ваш вопрос.

Рейтинг:
1

Patrice T

query = "Delete from BookingRequest where ID ='"+ id +"'";

Не обязательно решение вашего вопроса, но у вас есть еще одна проблема.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]