C# SQL DELETE RETURN ONLY TRUE

本文关键字:ONLY TRUE RETURN DELETE SQL | 更新日期: 2023-09-27 18:00:36

我的代码只返回true,我不知道它在哪里。

public bool Delete(int RGP)
{
    vsql = "DELETE FROM pescador WHERE RGP LIKE @RGP";
    SqlCommand cmd = null;
    if (this.Conectar())
    {
        try
        {
            cmd = new SqlCommand(vsql, objCon);
            cmd.Parameters.AddWithValue("@RGP", RGP);
            cmd.ExecuteNonQuery();
            return true;
        }
        catch(SqlException sqlerro)
        {
            throw sqlerro;
        }
        finally
        {
            this.Desconectar();
        }
    }
    else
        return false;
}

C# SQL DELETE RETURN ONLY TRUE

看:这个片段没用:

  catch(SqlException sqlerro)
  {
    throw sqlerro; // exception catched and thrown unmodified
  }

如果您想在查询失败时返回false

  catch(SqlException sqlerro) {
    return false;
  }

如果没有更改任何记录,则您希望返回false

  return cmd.ExecuteNonQuery() > 0;

最后,不要忘记使用箭头反模式可读性等。

public bool Delete(int RGP) {
  // Argument/State validation
  if (objCon == null)
    return false; // No connection
  // SQL should be readable
  vsql = @"delete 
             from Pescador 
            where Rgp like @RGP";
  try {
    // Dispose IDisposable (via using)
    using (SqlCommand cmd = new SqlCommand(vsql, objCon)) {
      cmd.Parameters.AddWithValue("@RGP", RGP);
      //TODO: be sure that SET NOCOUNT is not ON 
      return cmd.ExecuteNonQuery() > 0;
    }
  }
  finally {
    Desconectar();
  }
}

您总是返回true。检查您的代码。应该是这样的:

int i = cmd.ExecuteNonQuery();
return Convert.ToBoolean(i);

或者:

int i = cmd.ExecuteNonQuery();
if(i > 0)
    i = 1;
else
    i = 0;
return Convert.ToBoolean(i);