[英]Bug on delete button
我有一個刪除按鈕,准備從Datagridview
選擇一行后,然后按一下該按鈕,它將從數據庫中刪除該列。 但是我剛剛意識到一個問題已經解決,我無法解決。 問題很簡單,當我按下按鈕后,它應該刪除並更新Datagridview
而不刪除任何內容,但這沒有發生。 這是東西,這是刪除按鈕的代碼
Private Sub cmdDelete_Click(sender As Object, e As EventArgs) Handles cmdDelete.Click
SQLCon = New SqlConnection
SQLCon.ConnectionString = "...."
rbPorData.Checked = False
rbPorExtensão.Checked = False
rbPorNome.Checked = False
Try
SQLCon.Open()
If MsgBox("Tem a certeza que deseja eliminar " & apagarTextBox.Text & "?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
For i As Integer = Me.DataGridView2.SelectedRows.Count - 1 To 0 Step -1
cmdDelete = "DELETE infofile WHERE Filename='" & Me.DataGridView2.SelectedRows(i).Cells(0).Value.ToString() & "'"
SQLDA = New SqlDataAdapter(cmdDelete, SQLCon)
SQLDataSet = New DataSet()
SQLDA.Fill(SQLDataSet)
Me.DataGridView2.Rows.Remove(Me.DataGridView2.SelectedRows(i))
MessageBox.Show("Ficheiro apagado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
Next
SQLCon.Close()
UpdateDeletedFiles()
UpdateComboBoxDelete()
MostrarResultadoTotal()
ChangeLabelColor()
End If
Catch ex As Exception
MessageBox.Show(ex.ToString())
Finally
SQLCon.Dispose()
End Try
End Sub
我做了一些測試。 它的作用是在我單擊該行並按Delete按鈕后,它會刷新,但不會在datagridview和數據庫上刪除。 如果我再次嘗試相同的過程,它將被刪除。 我不知道為什么會這樣
將您的代碼更改為:
cmdDelete = "DELETE from infofile WHERE Filename=@Filename"
cmd = New SqlCommand(cmdDelete , SQLCon)
cmd.Parameters.Add(New SqlParameter("@Filename", Me.DataGridView2.SelectedRows(i).Cells(0).Value.ToString() ))
nbre = cmd.ExecuteNonQuery()
在數據適配器中提供SQL命令時,它就是select命令(請參見SqlDataAdapter構造函數(字符串,SqlConnection) )。 那也許不是您想要的。
您需要做的就是使用普通的SQL命令刪除文件名,如下所示:
If MsgBox("Tem a certeza que deseja eliminar " & apagarTextBox.Text & "?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Try
Using sqlConn As New SqlConnection("...")
Dim sql = "DELETE FROM infofile WHERE Filename = @Filename"
Using sqlCmd As New SqlCommand(sql, sqlConn)
sqlCmd.Parameters.Add(New SqlParameter With {.ParameterName = "@Filename", .SqlDbType = SqlDbType.NVarChar})
sqlConn.Open()
For i As Integer = Me.DataGridView2.SelectedRows.Count - 1 To 0 Step -1
Dim fn = Me.DataGridView2.SelectedRows(i).Cells(0).Value.ToString()
sqlCmd.Parameters("@Filename").Value = fn
sqlCmd.ExecuteNonQuery()
Next
For i As Integer = Me.DataGridView2.SelectedRows.Count - 1 To 0 Step -1
Me.DataGridView2.Rows.Remove(Me.DataGridView2.SelectedRows(i))
Next
sqlConn.Close()
End Using
End Using
MessageBox.Show("Ficheiro apagado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
UpdateDeletedFiles()
UpdateComboBoxDelete()
MostrarResultadoTotal()
ChangeLabelColor()
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End If
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.