2014-10-08 2 views
0

У меня есть простой оператор обновления, который обновляет местоположения, где это определенное местоположение. В настоящее время я создаю небольшое настольное приложение, где, когда я нажимаю кнопку, он будет обновляться, а затем отображать обновленные записи. Как я могу вернуть идентификаторы обновленных записей, а затем отобразить их на C#.Показать записи, которые были обновлены. 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(); 

Это, однако, только говорит мне количество записей, которые были обновлены, не которые Идентификаторы были обновлены таким образом я могу запросить, чтобы отобразить их. Помогите?

Например, если 3 записи были обновлены с идентификаторами: 1102, 1105, 111

Затем он должен отображать их количество на основе Id. Однако я не уверен, как я могу это сделать. Как бы я прошел через обновленные результаты.

+1

Читайте на 'п OUTPUT'. Это не просто использовать, хотя я не уверен, насколько сложно получить результаты от SqlCommand. – AaronLS

+0

Но что, если по какой-то причине эта конкретная запись не обновляется. Дисплей покажет это. НЕТ? – user2684009

+1

@MatthewMartin: разве это не гонка? Я также использовал бы «ВЫХОД»: http://stackoverflow.com/a/1610530/284240 –

ответ

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)); 
     } 
    } 
} 
+0

Я пытаюсь изменить это включает в себя два элемента Id и DealName> Но для этого потребуется вложенный список. Как добавить два элемента в список? – user2684009

+0

@user: вы можете использовать все, что вам нравится, словарь или список > или пользовательский класс с этими свойствами (f.e. Conset), какие экземпляры вы добавляете в список . –