我试图了解如何在不存在的情况下简化插入记录的过程,或者如果记录已存在则更新记录。我没有使用存储过程,尽管这可能是最有效的方法。
需要这样做的实际情况是将用户首选项/设置保存到我的SettingsUser表。
在MS Access中,我通常会提取DAO记录集以查找指定的设置。如果记录集返回空,那么我知道我需要添加一条新记录,我可以使用相同的记录集对象。另一方面,如果它不是空的,我可以立即更新设置的值。从理论上讲,这只是两个数据库操作。
在.NET中推荐的方法是什么?
答案 0 :(得分: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
method返回的受影响行的数量,并在需要时在另一个查询中执行插入。