ASP.Net:我如何检查数据库中是否已存在行?

时间:2011-04-19 06:48:04

标签: c# asp.net database

我想检查数据库中是否已存在某个值 - 如果存在,那么我将使用更新查询,否则我将执行插入。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

只需通过传递值来选择行。如果返回的rowcount> o表示表中有值。在这种情况下,更新它否则插入表格。

答案 1 :(得分:0)

您可以编写一个存储过程来检查该唯一字段是否已存在。一种方法是仅将SP用于插入,并检查该值是否已存在。如果返回yes,则可以调用Update-StoredProcedure。这种方法是安全的。

另一种方法是在检测到值存在时直接在“插入”-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

答案 2 :(得分:0)

我认为您的问题不是特定于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时才有效,而Insert只有在尚不存在时才会创建新行。您应该将两个语句作为查询放在单个SqlCommand中并执行它。

希望这有帮助。