我有一个简单的更新语句,用于更新某个位置的位置。我目前正在制作一个小型桌面应用程序,当我按下按钮时,它将更新,然后显示已更新的记录。如何返回已更新的记录的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显示他们的号码。 但是,我不确定如何做到这一点。我将如何循环更新结果。
答案 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));
}
}
}