2016-05-10 147 views
0

無法使用SQL Server從vb.net中的數據庫中刪除數據。無法從數據庫中刪除

這是我的代碼刪除,你能告訴我我哪裏出了錯?

的表的名稱是OneToOne

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    cn.Open() 
    With cmd 
     .Connection = cn 
     .CommandText = " DELETE * FROM OneToOne WHERE SrNo = " & DataGridView1.SelectedRows(0).Cells(0).Value 
     i = cmd.ExecuteNonQuery 
    End With 
    If (i > 0) Then 
     MsgBox("Conversation Deleted") 
    End If 
    cn.Close() 
    showdata() 
End Sub 
+0

Ack。在你做任何你需要閱讀的東西之前,瞭解並開始使用參數化查詢。這是廣泛開放的SQL注入。我的小朋友鮑比桌子喜歡對這樣的系統造成嚴重破壞。 http://bobby-tables.com/ –

+1

嘗試取出'*',在DELETE查詢中不需要,儘管我不確定這是造成問題的唯一原因。 –

+0

嘗試登錄DataGridView1.SelectedRows(0).Cells(0).ValueDataGridView1.SelectedRows(0).Cells(0).Value,並查看返回的值是什麼值 –

回答

2

要一次刪除所有的行,就可以通過選定的行進行迭代,並建立一個逗號分隔的Cell(0)值的字符串。

然後,而不是使用WHERE srNo =,使用WHERE srNo IN ({your string})

至少,這是做下面你目前的做法的方式。更好的方法是將表值參數傳遞給存儲過程,但這是一個廣泛的主題,需要進行研究。

而且,和大多數編程問題一樣,還有其他多種方法可以完成。

0

on_button_click

s = "DELETE FROM OneToOne WHERE SrNo IN(val1,val2.....valn)" 
     cn.Open() 
     cmd = New SqlCommand(s, cn) 
     i = cmd.ExecuteNonQuery() 
     If i > 0 Then 
      MsgBox("yup") 
     End If 
     cn.Close() 

VAL1,VAL2 ..是你SrNo值。這是關於你如何檢索/提供SrNo值