显示已更新的记录C#

时间:2014-10-08 15:13:40

标签: c# sql .net sql-server visual-studio

我有一个简单的更新语句,用于更新某个位置的位置。我目前正在制作一个小型桌面应用程序,当我按下按钮时,它将更新,然后显示已更新的记录。如何返回已更新的记录的ID,然后在C#中显示这些记录。

 SqlCommand cmd = new SqlCommand(" update conset set location='LA' where deal in (select deal from dealset where location='LA') and locationid = 'NY'", con);
                int rowsAffected = cmd.ExecuteNonQuery();

然而,这只告诉我更新的记录数量,而不是哪些ID已更新,因此我可以查询显示它们。救命?

例如,如果使用ID更新了3条记录:1102,1105,111

然后它应该根据Id显示他们的号码。 但是,我不确定如何做到这一点。我将如何循环更新结果。

1 个答案:

答案 0 :(得分:4)

我使用OUTPUT clause并循环DataReader

string sql = @"
UPDATE c 
SET    c.location = 'LA' 
OUTPUT INSERTED.IdColumn
FROM conset c
WHERE  deal IN (SELECT deal 
                FROM   dealset 
                WHERE  location = 'LA') 
AND c.locationid = 'NY';";

List<int> updatedIDs = new List<int>();
using (var con = new SqlConnection(Properties.Settings.Default.ConnectionString))
using (var cmd = new SqlCommand(sql, con))
{
    con.Open();
    using (var rd = cmd.ExecuteReader())
    {
        while (rd.Read())
        {
            updatedIDs.Add(rd.GetInt32(0));
        }
    }
}