2016-05-10 151 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值