我试图理解如何简化记录的过程,如果不存在或更新记录(如果已经存在)。我不是在使用存储过程,尽管这可能是这样做的最有效方法。
必要的实际情况是将用户偏好/设置保存到我的设置表。
在MS Access中,我通常会拉动DAO记录集寻找指定的设置。如果记录集回到空,则我知道我需要添加一个可以使用同一RecordSet对象进行的新记录。另一方面,如果不是空的,我可以立即更新设置的值。从理论上讲,这只是两个数据库操作。
在.NET中推荐的方法是什么?
存储过程当然是一种简单的方法。您可以尝试更新记录,如果没有记录更改,则将其添加。示例:
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
方法返回,并在其他查询中进行插入。