Member 13006682 Ответов: 2

Удалить не работает


в моем коде нет сообщения об ошибке, но не удалить запись. если есть какая-либо ошибка в логике, пожалуйста, направьте меня:код ниже:

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

private void button2_Click(object sender, EventArgs e)
        {
            con.Open();
            
            OleDbCommand delcmd = new OleDbCommand();
            //if (dataGridView1.Rows.Count > 1 && dataGridView1.SelectedRows[0].Index != dataGridView1.Rows.Count-1)
            if(dataGridView1.SelectedRows.Count > 0 && dataGridView1.SelectedRows[0].Index!=dataGridView1.Rows.Count-1)
            
            {
                delcmd.CommandText = "delete from table123 where Idno=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "";
               
                delcmd.Connection = con;
                delcmd.ExecuteNonQuery();
             
                dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
                MessageBox.Show("Row Deleted");
                bind();
                clear();
            }
else
{
Messagebox.show(“can’t delete”);
}
con.close();
                    }

Graeme_Grant

Вы установили точку останова в следующей строке и проверили передаваемое значение перед выполнением? Передается ли правильное значение?

delcmd.CommandText = "delete from table123 where Idno=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "";

Member 13006682

у меня есть 2 label& textbox as Name & Idno, как я даю ввод для вышеуказанного условия

Graeme_Grant

Не то, о чем я спрашивал. Знаете ли вы, как установить точку останова для целей отладки?

Member 13006682

пожалуйста, расскажите о том, как установить точку останова для отладки

2 Ответов

Рейтинг:
2

Graeme_Grant

Это видео поможет вам начать работу с отладкой: Базовая отладка с помощью Visual Studio 2010-YouTube[^]


Рейтинг:
0

OriginalGriff

Во-первых, не делай этого так! Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.

Во-вторых, если ничего не удаляется, это происходит потому, что предложение WHERE вашего SQL не совпадает. Это может быть неправильный столбец, неправильный datagridview или данные не те, что вы ожидаете - мы не можем сказать точно, потому что у нас нет запущенного приложения и мы все равно не можем получить доступ к вашей базе данных.
Поэтому используйте отладчик, чтобы точно узнать, что вы передаете в SQL, а затем вручную запросите свою БД, чтобы найти любые совпадающие строки. Если их нет - а их нет , - вам нужно посмотреть, почему. Но мы ничего не можем сделать для вас!