如何用新的&更新数据库修改记录?

时间:2013-03-14 07:08:39

标签: c# sql database dataset

我创建了一个database(从XML读取和填充数据)。我用SqlBulkCopy做了这个。 但场景是每当XML更新时(可能是插入新记录或修改现有记录) ...因此数据库也应该更新,所以我'我们创造了一个解决方案 首先应该在数据库和数据库中删除所有表的所有记录。再次执行SqlBulkCopy,以便可以更新数据......

但似乎非常糟糕。

有没有办法只更新那些记录,如果源XML有任何新记录,还需要插入新记录?

我也尝试了一些数据集合并操作,但我无法找到使用它们的正确方法。

1 个答案:

答案 0 :(得分:1)

试试这个:

Serialize the xml到一个类对象中 - 你可以将它添加为这个类对象的集合,即List<object>。然后通过C# Stored Procedure调用传递xml的唯一ID - 现在序列化的记录。您可以循环访问集合并使用存储过程匹配每个id。如果来自xml的记录不是太多,这可能会影响性能。

在存储过程中执行IF SELECT Count(*)... > 0。如果它返回大于0的值,则记录存在:

IF(SELECT COUNT(*) FROM table where uniqueid = @id) > 0)
BEGIN
    UPDATE table ... WHERE uniqueid = @id
END
ELSE
BEGIN
   INSERT INTO table (...) VALUES(...)
END 

或者使用MERGE INTO也很好用。

让存储过程返回一个值或boolen以指示数据库已成功更新。