Advertisement
Help Keep Boards Alive. Support us by going ad free today. See here: https://subscriptions.boards.ie/.
If we do not hit our goal we will be forced to close the site.

Current status: https://keepboardsalive.com/

Annual subs are best for most impact. If you are still undecided on going Ad Free - you can also donate using the Paypal Donate option. All contribution helps. Thank you.
https://www.boards.ie/group/1878-subscribers-forum

Private Group for paid up members of Boards.ie. Join the club.

C# SqlCommandBuilder() Delete is not working

  • 13-02-2013 08:56PM
    #1
    Registered Users, Registered Users 2 Posts: 7,544 ✭✭✭


    Im going insane trying to figure this one out.

    Im populating a DataTable from my database.
    A DataGridView DataSource is set to my DataTable.

    I insert, update and delete rows from the DataTable which in turn updates the DataGridView.

    Im using the below to update my changes back to the database where i pass in the modified DataTable.
    Insert and Update are working but Delete does not remove the deleted rows from the database table.
    private static void updateDatabase(DataTable dt)
    {
        SqlDataAdapter myAdapter = new SqlDataAdapter();
        SqlCommand myCommand = new SqlCommand("SELECT * from dbo.DisplayList", sqlCon);
        SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
    
        myAdapter.SelectCommand = myCommand;
    
        myAdapter.InsertCommand = myCommandBuilder.GetInsertCommand();
        myAdapter.UpdateCommand = myCommandBuilder.GetUpdateCommand();
        myAdapter.DeleteCommand = myCommandBuilder.GetDeleteCommand();
    
        myAdapter.Update(dt);
    }
    

    The myAdapter.DeleteCommand.CommandText is:
    DELETE FROM [dbo].[DisplayList] WHERE (([PropertyID] = @p1) AND 
    ([DisplayID] = @p2) AND ([DisplayName] = @p3) AND ((@p4 = 1 AND 
    [TerminalID] IS NULL) OR ([TerminalID] = @p5)))
    

    Anyone have any ideas whats wrong with the above or to help investigation how i can find out what the @p values are being converted to?


Comments

  • Registered Users, Registered Users 2 Posts: 7,544 ✭✭✭BrokenArrows


    Finally figured it out.

    When deleting the rows from the datatable i was using:
    myDataTable.Rows.RemoveAt(rowindex);
    This completly removes it from the datatable so when the SqlCommandBuilder came around to deleting it from the database it never knew it existed in the first place.

    For it to work you need to flag the row as deleted but not actually delete it.
    myDataTable.Rows[rowindex].Delete();

    By doing this it all worked.


Advertisement