0

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

前に述べたように、すべてのコードはエラーなしで実行されますが、見つかってコードから「削除」されたデータはまだテーブルに残っています。

どうしたの?または正しいコマンドを実行する方法、またはこれを行う方法は?

ありがとう

4

1 に答える 1

0

実際に行を削除しているわけではありません。あなたはそれを見つけますが、それが見つかった後は何もしないでください。sqlData.Updateステートメントの前にdataRow.Delete()を呼び出す場合は、行を削除する必要があります。

于 2011-11-04T17:15:51.233 に答える