sql Adapter.update确实添加新行并更新现有行,但不删除数据库中的行

时间:2014-07-07 09:53:00

标签: c# sql

我在Windows应用程序中使用datagridview从MSSQL数据库中获取数据。在网格中进行更改(如编辑行和添加新行)后,我使用 sqlAdapter.update(dataset,tableName)更新数据库。已编辑的行和新添加的行正确地存储在数据库中,

但如果我删除数据网格中的行并将其存储在DataTable中,然后使用 sqlAdapter.update(dataset,tableName)。进行更新,则不会更新数据库。

请注意:在点击以下代码之前,updatedDS中的表格已更新。

public bool UpdateDBwithDataSet(DataSet updatedDS, string dsName)
    {
        try
        {
            Concheck();
            //sAdapter = new SqlDataAdapter(SqlQuery, con);

            CCDcmdBld = new SqlCommandBuilder(sAdapter);
            sAdapter.DeleteCommand = CCDcmdBld.GetDeleteCommand(true);
            sAdapter.UpdateCommand = CCDcmdBld.GetUpdateCommand(true);
            sAdapter.InsertCommand = CCDcmdBld.GetInsertCommand(true);

            if (sAdapter.Update(updatedDS, dsName) > 0)
                return true;
            else
                return false;
        }
        catch (Exception ex)
        {
            return false;
        }
        finally
        {
            if (con.State == ConnectionState.Open) { con.Close(); }
        }

    }

请告诉我这里有什么问题。 (注意:它也不会抛出任何异常。)

1 个答案:

答案 0 :(得分:0)

我找到答案:)

我实际上在做 dsWFSubItem.Tables [dtName] .Rows.RemoveAt(selectedWorkflowRow); ,而我们需要执行以下操作 dsWFSubItem.Tables [dtName] .Rows [selectedWorkflowRow] .Delete(); 。然后 sqlDataAdapter.Update 方法将其从数据库中删除。