我正在尝试使用GetDeleteCommand()和DataAdapter.Update()删除数据库中的一行。
使用GetInsertCommand()和GetUpdateCommand()所有事务都可以工作,但是GetDeleteCommand()失败了,我的意思是“运行”到这条指令上,但数据仍然保留在表中。
这是我的代码:
Public Function delete(ByVal tabla As String, ByVal arg As VariantType) As Boolean
Dim ok As Boolean = False
Dim dataSet As DataSet = New DataSet(tabla)
Dim dataRow As DataRow
Dim dataTable As DataTable
Me.sqlComm.Connection = Me.sqlConn
Me.sqlComm.CommandText = "Select * from " & tabla
Try
Me.sqlDA.SelectCommand = Me.sqlComm
'llenar el dataset con los datos de la consulta
Me.sqlDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
Me.sqlDA.Fill(dataSet, tabla)
'nuevo commandbuilder
Me.sqlCB = New SqlCommandBuilder(Me.sqlDA)
'crear el buffer de la tabla
dataTable = dataSet.Tables(tabla)
'buscar el valor en la tabla
dataRow = dataTable.Rows.Find(arg)
'obtener el delete command
Me.sqlDA.DeleteCommand = Me.sqlCB.GetDeleteCommand(True)
'actualizar los registros.
'se supone q con el DeleteCommand deberia borrar en este punto el dato
Me.sqlDA.Update(dataSet, tabla)
ok = True
Catch ex As Exception
Console.WriteLine(ex.StackTrace.ToString() & vbCrLf & ex.Message())
Me.err = ex.StackTrace.ToString() & vbCrLf & ex.Message()
End Try
Me.sqlConn.Close()
Return ok
End Function
如前所述,所有代码都运行没有错误,但是从我的代码中找到并“删除”的数据仍然保留在表中。
怎么了?或者如何做正确的命令或如何做到这一点?
感谢
答案 0 :(得分:0)
您实际上并未删除该行。你找到它,但在找到之后不要对它做任何事情。如果在sqlData.Update语句之前调用dataRow.Delete(),则应该删除该行。