簡體   English   中英

如何使用新記錄和修改記錄來更新數據庫?

[英]How to update database with new & modified records?

我已經創建了一個database (從XML讀取和填充數據)。 我已經使用SqlBulkCopy做到了這一點。 但是場景是每當XML更新時(可能是插入新記錄或修改現有記錄) ...因此數據庫也應更新 ,因此,我創建了一個解決方案,首先應該對所有表的所有記錄進行更新 。在數據庫中刪除並再次執行SqlBulkCopy ,以便可以更新數據……

但這似乎是最糟糕的方式。

有什么方法可以只更新那些記錄,如果源XML有任何新記錄,則需要更新這些記錄並插入新記錄?

我也嘗試了一些數據集合並操作,但是我找不到正確的使用方法。

嘗試這個:

將xml序列化為類對象-您可以將其添加為該類對象的集合,即List<object> 然后,通過C#存儲過程調用傳遞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

讓存儲過程返回一個值或布爾值以指示數據庫已成功更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM