2016-03-17 5 views
0

Я просто прошу о помощи .. он не удаляет строку. .Но я не обнаружил никакой ошибки .. пожалуйста, помогите me..my коды:Оператор SQL DELETE в C#

private void btndelete_Click(object sender, EventArgs e) 
    { 
     if (txtprn.Text == "" || txtdescription.Text == "") 
     { 
      MessageBox.Show("No selected file to be delete!", 
          "Delete Data", 
          MessageBoxButtons.OKCancel, 
          MessageBoxIcon.Warning); 
     } 
     else 
     { 
      DialogResult answer; 
      answer = MessageBox.Show("Are you sure you want to delete this record?", 
            "Delete Record", 
             MessageBoxButtons.YesNo, 
             MessageBoxIcon.Question, 
             MessageBoxDefaultButton.Button2); 

      if (answer == DialogResult.Yes) 
      { 
       con.Open(); 
       com.CommandText = 
        @"DELETE 
         FROM tblsupply 
         WHERE (prnumber = @prnumber AND   
          description = @description)"; 

       com.Parameters.Clear(); 
       com.Parameters.AddWithValue("@prnumber", txtprn.Text); 
       com.Parameters.AddWithValue("@description", txtdescription.Text); 
       com.ExecuteNonQuery(); 
       MessageBox.Show("Record Deleted!"); 
       con.Close(); 
      } 
      ClearFields(); 
      GridRefresh(); 
     } 
    } 
+0

Любые исключения бросают? –

+1

Проверьте значение вывода. Если он возвращает положительное число, то многие записи удаляются. Если вы получаете -1, на сервере sql возникает откат. 'var output = com.ExecuteNonQuery();' – CarbineCoder

+0

Что такое возвращаемое значение вызова ExecuteNonQuery. Это должно быть количество затронутых строк (в этом случае удалено) –

ответ

-3

Места это попытка поймать, так что вы будете знать ошибку

try 
    { 
    DialogResult answer; 
       answer = MessageBox.Show("Are you sure you want to delete this record?", "Delete Record", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); 

       if (answer == DialogResult.Yes) 
       { 
        con.Open(); 
        com.CommandText = "DELETE FROM tblsupply WHERE ([email protected] AND [email protected])"; 
        com.Parameters.Clear(); 
        com.Parameters.AddWithValue("@prnumber", txtprn.Text); 
        com.Parameters.AddWithValue("@description", txtdescription.Text); 
        com.ExecuteNonQuery(); 
        MessageBox.Show("Record Deleted!"); 
        con.Close(); 
       } 
       ClearFields(); 
       GridRefresh(); 
    } 
    catch(Exception ex) 
    { 
     ex.Message.ToString(); 
    } 
+2

Он сказал, что ошибок нет, поэтому я предполагаю, что ничего не поймает. Это не ответ. –

+0

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

3

Проверьте значение выхода , Если он возвращает положительное число, многие записи удаляются успешно. Если вы получите -1, произойдет откат, возвращаемое значение равно -1.

Преобразуйте txtprn в int так, как он выглядит как число, и вы проходите как строка.

com.Parameters.AddWithValue("@prnumber", Convert.ToInt32(txtprn.Text)); 
com.Parameters.AddWithValue("@description", txtdescription.Text); 
var numberOfRowsAffected = com.ExecuteNonQuery(); 
MessageBox.Show("Record Deleted!"+numberOfRowsAffected); 
0

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

  1. Пользователь добавляет новую запись (хотя GUI)
  2. Пользователь сохранение и приложение должно создать новый идентификатор для него. Приложение.
  3. После загрузки сохраненной записи приложение также будет извлекать идентификатор и сохранять его где-то за сценой.
  4. После удаления записи (хотя GUI) удаление будет выполняться в соответствии с идентификатором, а не через значения в текстовых окнах.

В вашем текущем состоянии обратите внимание, что удаление может быть неудачным, если это пробелы, например, чтобы вы не могли полагаться на эти тексты для удаления.

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