抓住零行更新

时间:2014-03-14 19:39:09

标签: c# sql .net ado.net

我有以下代码清除我们使用的应用程序的帐户注销标志。

try
{
    string connectionString = "Data Source=DBSERVER;Initial Catalog=AbraEmployeeSelfService;Integrated Security=False;user=FOO;pwd=BAR";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        using (SqlCommand command = new SqlCommand("UPDATE dbo.tUSERS SET UserUnsuccessfulLoginCount = 0, UserLockoutInd = 0 WHERE LEFT(UserAbraSuiteLogicalPrimaryKey, 4) = '" + BadgeNumber + "'", connection))
        {
            command.ExecuteNonQuery();
            connection.Close();
        }
    }
}
catch (SqlException ex)
{
    MessageBox.Show(ex.Message);
}

如何在返回零行时捕获此信息?

2 个答案:

答案 0 :(得分:3)

ExecuteNonQuery将返回受影响的行数。用那个。 :)

int nbUpdatedRows;

(...)

nbUpdatedRows = command.ExecuteNonQuery();

(...)

if (nbUpdatedRows == 0) // do stuff

答案 1 :(得分:1)

ExecuteNonQuery()方法返回执行命令后影响的总行数。

来自MSDN:ExecuteNonQuery()

  

对连接执行Transact-SQL语句并返回   受影响的行数。

您可以检查其返回值以与零进行比较。

试试这个:

int status = command.ExecuteNonQuery();

if(status==0)
  MessageBox.Show("No Rows Updated!");