簡體   English   中英

如何從vb.net中的datagridview刪除SQL Server數據庫中的行?

[英]How to delete rows in database in sql server from datagridview in vb.net?

我正在嘗試從datagridview刪除sql中的數據庫中的行。 你能幫忙嗎?

Private Sub cmdDelete_Click(sender As Object, e As EventArgs) Handles cmdDelete.Click

    SQL.DataUpdate("DELETE FROM Exp_Table2 WHERE ExpInd_ID = ??")

End Sub

我猜想是“ 一個脾氣暴躁的人,可能只會給您所需的所有代碼 ”。

正如Nick所說,理想情況下,絕對不要將字符串連接到SQL ,因為任何帶有單引號(')的值都會破壞它,但不僅如此,黑客還可以對數據庫執行各種操作。 我建議研究SQL parameters

但是,出於這個問題的考慮,一旦您遵循了Nick提供的鏈接以從DataGridView獲取值(執行此操作的方法有很多,您還可以將行索引與列索引/列一起使用名稱,但是無論您希望采用哪種方式都可以),您需要將此值分配給與您提取的值具有相同數據類型的變量。

最后的部分將使用

SQL.DataUpdate("DELETE FROM Exp_Table2 WHERE ExpInd_ID = '" & yourVariable & "'")

再次,正如我所說-我不主張在SQL statements串聯,但是當我為大學做過第一個項目時,我也經常這樣做,所以我知道我們都需要從某個地方開始。

不過,將來請使用參數 ,然后在遇到特定問題時尋求幫助。

參數有助於防止黑客在插入單引號后使用DROP TABLE類的命令,這會刪除查詢正在操作的整個表(及其中的所有數據),因此始終最好使用參數來防止這種情況。

下面是一個如何使用它們的示例(這是我當前正在研究的項目中的一個查詢)

For Each dr As DataRow In dt.Rows
   sql = "SELECT * FROM [Sales Headers] WHERE [Order_Number] = ? AND [Order_Cancelled] = ? AND [Stage] < ?"
   cmd = New OleDbCommand(sql, con)
   cmd.Parameters.Add("@num", OleDbType.Integer).Value = dr.Item("Order_Number")
   cmd.Parameters.Add("@can", OleDbType.Boolean).Value = False
   cmd.Parameters.Add("@stage", OleDbType.Integer).Value = 7
   da = New OleDbDataAdapter(cmd)
   da.Fill(commTable)
Next

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM