2011-06-16 29 views
1

我更新使用C#這樣的SQL Server 2008數據庫的記錄數:如何獲得COUNT(*)用於更新

foreach (DataRow row in dt.Rows) 
{ 
    faxstatus = row.ItemArray[5].ToString().Contains("0000") ? "Faxed" : "Error"; 

    query = 
     @"update FileLog set 
     FaxStatus=" + "'" + faxstatus + "'," + 
     "FaxedPageCount=" + "'" + row.ItemArray[1] + "'," + 
     "dtFaxed=" + "'" + row.ItemArray[2] + "'," + 
     "BiscomCode=" + "'" + row.ItemArray[5] + "', " + 
     "RetryCount=" + "'" + row.ItemArray[4] + "' " + 
     "where CONVERT(VARCHAR(255), JobID) =" + "'" + row.ItemArray[3] + "'" + 
     " and FaxStatus<>'Faxed'"; 

    command = new SqlCommand(query, myConnection); 
    command.ExecuteNonQuery(); 
    NumberOfRecordsUpdated++; 

} 

我想知道是否有可能返回多少記錄已更新?

+3

這段代碼泄漏了,你需要'Dispose''SqlCommand'或者(更好)將它包裝在'using'中。 – 2011-06-16 20:10:37

+3

我不得不說這是一個非常骯髒的方式來更新數據庫。我真的希望你的數據中沒有任何「'」字符!至少你應該使用參數。 – 2011-06-16 20:10:43

+1

@Joel:參數化語句永遠! – 2011-06-16 20:11:36

回答

5

捕獲並使用ExecuteNonQuery的結果爲一個整數。該方法返回受操作影響的記錄數。

請參閱SqlCommand.ExecuteNonQuery Method

這就是說,你相信你的數據源有多少?足以讓你的數據保持完整?如果我沒有懇求你探索參數化查詢,我會被重新調整。 A using聲明也將得到保證,以便您的一次性資源(SqlConnection,SqlCommand等)得到正確處理。

8

是的。使用ExecuteNonQuery的返回值。 :-)

引用ExecuteNonQuery's documentation

對於UPDATE,INSERT和DELETE語句,返回值是受該命令影響的行數。

3

SELECT @@ROWCOUNT附加到您的陳述中,並使用ExecuteScalar而不是ExecuteNoneQuery

相關問題