我尝试删除2行后,我有DBConcurrencyException

时间:2012-01-05 15:37:14

标签: c# sql wpf ado.net dataset

我在我的程序中使用DataSetDataAdapter。在我的数据库中,我编写了一个名为DeleteTheme的存储过程:

     ALTER PROCEDURE [dbo].[DeleteTheme]
     @Theme nchar(50)
     AS
     DELETE setOfThemes
     FROM  
     setOfThemes INNER JOIN themes
     ON setOfThemes.number=themes.ID
     WHERE themes.thema=@Theme

在C#中,我可以使用以下代码删除DataGrid中的行:

    private void ThemeDataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Delete)
        {
            DataRow dr = myDataSet.Tables["themes"].NewRow();
            dr = myDataSet.Tables["themes"].Rows[numberOfRow];
            dr.Delete();
        }
    }

之后我使用此代码使用按钮更新:

        adapter.DeleteCommand = adapterCommands.DeleteTheme();
        adapter.Update(myDataSet, "themes");

我引起了异常

  

DBConcurencyExeption
  并发冲突:DeleteCommand   影响了预期的1条记录中的0条。“

它有什么不对吗?

(点击更新按钮后删除了2行)

1 个答案:

答案 0 :(得分:0)

从代码示例中,您似乎通过调用DataTable方法向NewRow()添加了一行。您是否要通过调用Delete()方法将数据行标记为已删除。 This link可能有帮助。