我正在使用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++;
}
我想知道是否可以返回更新了多少条记录?
答案 0 :(得分:8)
是。使用ExecuteNonQuery
的返回值。 : - )
引用ExecuteNonQuery
's documentation:
对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数。
答案 1 :(得分:5)
捕获并使用ExecuteNonQuery
的结果为整数。该方法返回受操作影响的记录数。
请参阅SqlCommand.ExecuteNonQuery Method。
话虽如此,您对数据源的信任度是多少?足够打赌你的数据完整性吗?如果我没有恳请您探索参数化查询,我会被遗忘。还需要using
声明,以便妥善处理您的可支配资源(SqlConnection
,SqlCommand
等。
答案 2 :(得分:3)
参考SqlCommand.ExecuteNonQuery Method:
返回值
类型:System.Int32
受影响的行数。
答案 3 :(得分:3)
在您的对帐单中附加SELECT @@ROWCOUNT
并使用ExecuteScalar
代替ExecuteNoneQuery
。
答案 4 :(得分:1)
您可以使用@@ROWCOUNT。