2016-05-04 4 views
0

Единственная проблема с кодом заключается в том, что при наличии одного и того же идентификатора он также удалит это, что на самом деле не удаляет строку, выбранную мной в datagridview.Как удалить выбранную строку в datagridview в базе данных?

 private void Delete_Button_Click(object sender, EventArgs e) 
    { 

     if (dataGridView1.SelectedRows.Count > 0) 
     { 
      int Index = dataGridView1.CurrentCell.RowIndex; 
      if (MessageBox.Show("Are you sure?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 
      { 
       string delete = dataGridView1.Rows[Index].Cells[0].Value.ToString(); 
       SqlCeCommand cmd = new SqlCeCommand("delete from Contact_List where Id "+ delete + "'", con); 
       con.Open(); 
       cmd.ExecuteNonQuery(); 
       MessageBox.Show("Information Deleted....."); 
       filldata(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Please Select a Row"); 
     } 
     con.Close(); 
    } 

Может кто мне помочь? поэтому этот код будет удалять только выбранную строку, а также базу данных.

Спасибо! и извините за плохой Английский

+0

Нет ли первичного ключа? Вам нужна форма первичного ключа, чтобы однозначно идентифицировать запись, иначе нет возможности сообщить БД удалить конкретную запись. –

+0

'', когда есть один и тот же идентификатор '' - Что теперь? Если несколько записей имеют * одинаковый идентификатор *, то как вы можете определить их отдельно? – David

+0

примечание: qurey недействительно: '" delete from Contact_List, где Id = '"+ deleteIndex +"' "'; должен быть добавлен = 'и использовать другое имя переменной для удаления в предпочтении (например, deleteIndex). –

ответ

0

Прежде всего, используйте параметризованные запросы. Во-вторых, вам нужно либо поместить ключевое поле в gridview (даже если у вас его есть только в скрытом столбце), либо переработать оператор delete, чтобы включить достаточно столбцов, чтобы удалить только нужную строку. И если вы не можете определить уникальную строку в таблице на основе значений в выбранной строке в виде сетки, вам в основном не повезло.

Смежные вопросы