2015-08-22 6 views
-6

В этом AddPatient.cs я не могу удалить всю строку, но когда это действие выполняется в C# через действие кнопки удаления, оно не работает, поэтому мне нужна помощь.Удалить строку в sql?

private void Delete_Click(object sender, EventArgs e) 
    { 

     if (pno.Text != "" || pname.Text != "" || age.Text != "" || sex.Text != "" || add.Text != "" || city.Text != "" || phone.Text != "" || edate.Text != "" 
      || dname.Text != "" || dig.Text != "" || dpname.Text != "") 
      try 
      { 
       cn.Open(); 
       cmd.CommandText = 
       "delete from PatientDetails where PatientNumber= '" + pno.Text + "' and PatientName='" + pname.Text + "' and Age='" + age.Text + "' and Sex ='" + sex.Text + "' and PatientAddress='" + add.Text + "' and City='" + city.Text + "' and PhoneNumber='" + phone.Text + "' and EntryDate='" + edate.Text + "' and DoctorName='" + dname.Text + "' and Diagnosis='" + dig.Text + "' and DepartmentName='" + dpname.Text + "'"; 
       cmd.ExecuteNonQuery(); 
       cmd.Clone(); 
       cn.Close(); 
       MessageBox.Show("Record Deleted Successfully"); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 

      } 


    } 
+1

Пожалуйста, укажите «не работает». Это ошибка или строка не удалена? –

+1

Определите ** (1) ** фактическую базу данных, которую вы используете, и ** (2) ** то, что * не работает * на самом деле означает - вы получаете сообщение об ошибке? Если да, то что * ошибка ?? Это просто ничего не делает? И пожалуйста: используйте ** параметризованные запросы ** и не объединяйте вместе свой SQL так! –

+0

'cmd.Clone();' ??? и этот sql не выполняется. прочитайте некоторый учебник, как написать sql, pls –

ответ

4

Сепаратор в пункте where является and или or, не ,:

  "delete from PatientDetails where PatientNumber= '" + pno.Text + "' and PatientName='" + pname.Text + "' and Age='" + age.Text + "' and Sex ='" + sex.Text + "' and PatientAddress='" + add.Text + "' and City='" + city.Text + "' and PhoneNumber='" + phone.Text + "' and EntryDate='" + edate.Text + "' and DoctorName='" + dname.Text + "' and Diagnosis='" + dig.Text + "' and DepartmentName='" + dpname.Text + "'"; 

Однако, вы должны действительно быть удаление по идентификатору не длинным списком столбцов.

Также рассмотрите возможность использования параметризованных запросов. Прямое включение пользовательского ввода в строки не только создает угрозу SQL-инъекции, но и может нарушить работу системы. Например, если одно из имен - «O'Conner».

+0

это не работает! –

+0

@AdeesananSiva. , , Измените свой вопрос и распечатайте запрос * после * подстановки переменных. Вероятно, ошибка будет очевидна. –

0

когда-либо слышал о первичном ключе? когда-либо слышал об инфраструктуре Entity или nhibernate?

воздержитесь от таких ручных вещей!

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