如何获取更新记录数的计数(*)

时间:2011-06-16 20:06:56

标签: c# .net sql sql-server-2008

我正在使用c#更新sql server 2008数据库,如下所示:

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++;

}

我想知道是否可以返回更新了多少条记录?

5 个答案:

答案 0 :(得分:8)

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

引用ExecuteNonQuery's documentation

  

对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数。

答案 1 :(得分:5)

捕获并使用ExecuteNonQuery的结果为整数。该方法返回受操作影响的记录数。

请参阅SqlCommand.ExecuteNonQuery Method

话虽如此,您对数据源的信任度是多少?足够打赌你的数据完整性吗?如果我没有恳请您探索参数化查询,我会被遗忘。还需要using声明,以便妥善处理您的可支配资源(SqlConnectionSqlCommand等。

答案 2 :(得分:3)

参考SqlCommand.ExecuteNonQuery Method

  

返回值
  类型:System.Int32
  受影响的行数。

答案 3 :(得分:3)

在您的对帐单中附加SELECT @@ROWCOUNT并使用ExecuteScalar代替ExecuteNoneQuery

答案 4 :(得分:1)

您可以使用@@ROWCOUNT