gpt4 book ai didi

c# - 使用 ADO.NET SqlDataAdapter 更新单个记录

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:01 29 4
gpt4 key购买 nike

我正在使用 C# 在 Windows 窗体上使用 SqlDataAdapter。我有一个 BindingSource,通过功能性记录遍历将它链接到我的字段并将更改保存回数据库。

我想为用户提供使用当前记录的更改来更新数据库的选项,而不是将所做的更改写入其他记录,而是将它们保存在缓存的修改集中(即保存与全部保存)。

我整理了以下(某种程度上)有效的方法:

SqlCommand updateCurrent = new SqlCommand("UPDATE Table SET Attribute = @attribute WHERE ID = @currentRecord", sqlConnection)

updateCurrent.Parameters.AddWithValue("@currentRecord", bindingSource.GetItemProperties(null)["ID"].GetValue(bindingSource.Current));
updateCurrent.Parameters.AddWithValue("@attribute", bindingSource.GetItemProperties(null)["Attribute"].GetValue(bindingSource.Current));

updateCurrent.ExecuteNonQuery();

它的工作原理是更新当前显示的记录(并且只更新该记录),但是当稍后调用常规更新函数时,它会导致 System.Data.DBConcurrencyException(UpdateCommand affected 0预期的 1 条记录)。

我想我明白为什么会发生错误(我对数据库所做的更改现在没有反射(reflect)在缓存副本中),但不知道如何继续。

是否有执行此操作的最佳实践?从一开始就不是一个天生的坏主意吗?

最佳答案

为了归档您想要的内容,您只需执行以下操作:

此命令将使用此特定行 (yourDataRow) 的内容更新您的数据库。

YourTableAdapter.Update(yourDataRow);

此命令将更新整个数据表。

YourTableAdapter.Update(yourDataTable);

DataTable 将知道哪些行已被更新,哪些已被保存。

关于c# - 使用 ADO.NET SqlDataAdapter 更新单个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19494259/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com