簡體   English   中英

ASP.Net:如何檢查數據庫中是否已存在行?

[英]ASP.Net: How I can check whether a row already exists in the database?

我想檢查數據庫中是否已經存在一個值-如果存在,那么我將使用更新查詢,否則將執行插入操作。

我應該怎么做?

只需通過傳遞值來選擇行。 如果返回的rowcount> o表示表中有一個值。 在這種情況下,將其更新,否則將其插入表中。

您可以編寫一個存儲過程,以檢查該唯一字段是否已經存在。 一種方法是僅將SP用於插入,並在那里檢查該值是否已存在。 如果返回yes,則可以調用Update-StoredProcedure。 該方法是故障安全的。

另一種方法是在檢測到該值存在時直接在“ Insert” -SP中進行更新。 我認為這是混淆的代碼。

IF (EXISTS (SELECT *
            FROM  YourTable
            WHERE LoweredUniqueField = LOWER(@Value)))
BEGIN
    -- you could use this output parameter as information
    SET @InfoCode = 1
    GOTO Cleanup
END

-- Else Insert new record:
 INSERT INTO .....

Cleanup:

    RETURN @InfoCode

END

我認為您的問題不是特定於ASP的,並且我假設您正在連接到MS SQL SERVER。

假設您有一個簡單的表格,如下所示:

CREATE TABLE Products_table ( [ProductID] [int] NULL, [Qty] [int] NULL ) ON [PRIMARY]

如果要在給定產品存在時更新其數量,否則要創建它,則可以使用以下語句:

UPDATE Products_table SET Qty = 1000 WHERE ProductID = 10 

INSERT INTO Products_table (ProductID,Qty)
SELECT 10 as ProductID, 1000 as ProductQty
WHERE NOT EXISTS (SELECT 1 FROM Products_table WHERE ProductID = 10 )

僅當ProductID = 10時更新才有效,並且插入將僅在不存在的情況下創建新行。 您應該將兩個語句作為查詢放在單個SqlCommand中,然后執行它。

希望這可以幫助。

暫無
暫無

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

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