0

我试图了解如何简化插入记录(如果不存在)或更新记录(如果已存在)的过程。我没有使用存储过程,尽管这可能是最有效的方法。

需要这样做的实际场景是将用户首选项/设置保存到我的 SettingsUser 表中。

在 MS Access 中,我通常会提取一个 DAO 记录集以查找指定的设置。如果记录集返回为空,那么我知道我需要添加一条新记录,我可以使用相同的记录集对象执行此操作。另一方面,如果它不为空,我可以立即更新设置的值。理论上,这只是两个数据库操作。

在 .NET 中执行此操作的推荐方法是什么?

4

1 回答 1

2

存储过程当然是一种简单的方法。在那里您可以尝试更新记录,如果没有记录更改,则添加它。例子:

create procedure UpateUserSetting
  @UserId int,
  @Setting int
as

set nocount on

update UserSetting
set Setting = @Setting
where UserId = @UserId

if (@@rowcount = 0) begin

  insert into UserSetting (
    UserId, Setting
  ) values (
    @UserId, @Setting
  )

end

您可以在没有存储过程的情况下执行相同的操作。然后,您将首先运行更新,并检查从ExecuteNonQuery方法返回的受影响行数,并在需要时在另一个查询中插入。

于 2012-10-19T17:06:49.610 回答