C# C确认表行已从数据库中删除

C# C确认表行已从数据库中删除,c#,sql,C#,Sql,我已经编写了一个方法,该方法将尝试根据主键id从db表中删除一行。我遇到的问题是,即使记录已被删除/或不存在,try块始终返回Success public string delete_visit(int id) { string deleteResponse = null; string cnn = ConfigurationManager.ConnectionStrings[connname].ConnectionString;

我已经编写了一个方法,该方法将尝试根据主键id从db表中删除一行。我遇到的问题是,即使记录已被删除/或不存在,try块始终返回Success

public string delete_visit(int id)
        {
            string deleteResponse = null;
            string cnn = ConfigurationManager.ConnectionStrings[connname].ConnectionString;
            using (SqlConnection connection = new SqlConnection(cnn))
            {
                string SQL = string.Empty;
                SQL = "DELETE FROM [" + dbname + "].[dbo].[" + tbname + "]  WHERE VisitorNumber = @IDNumber ";

                using (SqlCommand command = new SqlCommand(SQL, connection))
                {
                    command.Parameters.Add("@IDNumber", SqlDbType.Int);
                    command.Parameters["@IDNumber"].Value = id;
                    try
                    {
                        connection.Open();
                        command.ExecuteNonQuery();

                        deleteResponse = "Success";

                    }
                    catch (Exception ex)
                    {
                        deleteResponse = "There was a problem deleting the visit from the database. Error message: " + ex.Message;
                    }
                }

            }

            return deleteResponse;
        }
我想知道这场争吵是否受到影响。我可以在SQL Server Management Studio中这样做:

DELETE FROM Visits
WHERE VisitorNumber=88;
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
所以我想知道如何将@@ROWCOUNT位插入到我的c中,这样我就可以知道行是否被删除了

谢谢,这表明有多少行受到影响

因此:


问题是这个数字可能会受到查询实际功能的影响。执行触发器或调用存储过程可能会影响输出,从而改变受影响的行数。如果确实需要,那么首先执行一个查询,检查具有给定ID的记录是否存在。

从VisitorNumber=88的访问中删除;选择@@ROWCOUNT并签入您的C代码返回值考虑使用存储过程-以这种方式编写SQL查询很难区分好坏。如果SQL代码发生更改,您还需要重建和重新部署解决方案。是的,如果你只是拼凑一些东西,这不是什么大不了的事,但是如果这是一个企业解决方案被推到数百台服务器上,这是一个大不了的事。谢谢@CodeCaster,这太完美了,这是一个小规模的应用程序,所以这就成功了。
int rowsAffected = command.ExecuteNonQuery();
if (rowsAffected == 0)
{
    deleteResponse = "No rows affected";
}