我在我的程序中使用DataSet
和DataAdapter
。在我的数据库中,我编写了一个名为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行)
答案 0 :(得分:0)
从代码示例中,您似乎通过调用DataTable
方法向NewRow()
添加了一行。您是否要通过调用Delete()
方法将数据行标记为已删除。 This link可能有帮助。