Member 9983063 Ответов: 1

Ссылка на объект для получения экземпляра ошибка объекта при нажатии кнопки Удалить


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

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

foreach (DataGridViewRow item in this.dataGridView1.Rows)
            {
                if (bool.Parse(item.Cells[1].Value.ToString()))
                {
                    con_string.Open();
                    OleDbCommand command = new OleDbCommand();
                    command.Connection = con_string;
                    command.CommandText = "Delete from [Runtime] Where [Values] = " + item.Cells[0].Value.ToString() + "";
                    command.ExecuteNonQuery();
                    con_string.Close();
                }
            }

1 Ответов

Рейтинг:
11

Wendelius

Одна из проблем заключается в том, что вы связываете значения непосредственно с инструкцией SQL. Это приводит к ошибкам преобразования, оставляет вас открытыми для SQL-инъекций и так далее.

Исправление будет заключаться в использовании OleDbParameter объекты. В то время как в статье используется SqlParamater, идея та же самая, так что взгляните на Правильное выполнение операций с базой данных[^]


Member 9983063

я также пробовал oledbparams

Wendelius

В чем была ошибка, которую вы получили с ними?

Member 9983063

та же ошибка

Wendelius

По какой линии?

Member 9983063

в этой строке

если (логическое условие.Синтаксический анализ(поз.Клетки[1].Значение.Метод toString()))

Wendelius

Теперь, используя отладчик, проверьте:
- Содержит ли элемент указанную ячейку. Другими словами, это предмет.Ячейки[1] null? В этом случае значение потерпит неудачу
- Если он не равен нулю, то имеет ли он значение или является значением null. В этом случае ToString потерпит неудачу

Member 9983063

хммм я думаю, что метод toString-это не клево у меня есть ценности в моей БД

Member 9983063

как я могу решить эту проблему, если строка не удалась так

Wendelius

Как уже было сказано, используйте отладчик, чтобы убедиться, что это проблема.

Чтобы решить эту проблему, измените код на что-то вроде

если (пункт.Ячейки[1]. Value != null && bool.Синтаксический анализ(поз.Клетки[1].Значение.Метод toString()))
{
...

Но также обратите внимание, что, как было сказано в начале, вы действительно должны использовать пареметры

Member 9983063

Спасибо чувак это работает ты делаешь мой день лучше спасибо тебе большое

Wendelius

Рад, если это помогло!