ASánchezDíaz

Autoaprendiendo .NET y otras cosas


Cómo contar los registros de una tabla en SqlServer

A menudo, cuándo usamos una base de datos SqlServer en nuestras aplicaciones, nos surge la necesidad de saber únicamente cuántos registros tenemos almacenados en una tabla.

Por ejemplo, si estamos desarrollando una aplicación que gestione usuarios, podemos necesitar saber cuántos usuarios hay registrados para indicarlo en algún punto de la web, algo así como
“Tenemos x usuarios registrados”

En estos casos no necesitamos saber cual es el nombre o el email de los usuarios, sólo la cantidad.

En nuestra tabla “usuarios” debería haber una columna, llamada por ejemplo “id”, con autoincremento (se autoincrementa en una unidad especificada en cada registro nuevo).

Podemos ejecutar la sentencia:

SELECT COUNT(id) FROM usuarios

que nos devolvería el número de registros de la tabla.

El siguiente código se conectará a la base de datos, ejecutará la sentencia y devolverá el número de registros:

int ObtenerNumeroUsuarios()
{
       int numeroRegistros;

      //creamos un ámbito using que limpiará todo antes de salir
      //creamos la conexion
      //pasando un connectionString (datos de conexion)
       using(SqlConnection conexion = new SqlConnection(connectionString))
      {
            string sql = "SELECT COUNT(id) FROM usuarios";

            conexion.Open();

             SqlCommand command= new SqlCommand();
                command.Connection = conexion;
                command.CommandText = sql;
                command.CommandType = CommandType.Text;

            numeroRegistros = (int)command.ExecuteScalar();

            command.Dispose();

            conexion.Close();
      }
       return numeroRegistros;
}

Este método devolvería el número de usuarios en la tabla.

También podemos especificar un filtro en la sentencia sql, para acotar los resultados, por ejemplo:

string sql = "SELECT COUNT(id) FROM usuarios WHERE edad=@edad";

Aunque no es el propósito de esta entrada, hemos usado un parámetro en la sentencia: @edad

Esto es una buena práctica que evita algunos problemas de seguridad. Cuando usamos un parámetro, debemos inicializarlo y añadirlo a los parámetros del objeto SqlCommand. El método quedaría:

 

int ObtenerNumeroUsuarios(int edad)
{
       int numeroRegistros;

      //creamos un ámbito using que limpiará todo antes de salir
      //creamos la conexion
      //pasando un connectionString (datos de conexion)
       using(SqlConnection conexion = new SqlConnection(connectionString))
      {
            string sql = "SELECT COUNT(id) FROM usuarios WHERE edad=@edad";

            conexion.Open();

             SqlCommand command= new SqlCommand();
                command.Connection = conexion;
                command.CommandText = sql;
                command.CommandType = CommandType.Text;
            SqlParameter parametro =  new SqlParameter("@edad", SqlDbType.Int);
            parametro.Value = edad;
            command.Parameters.Add(parametro);
            numeroRegistros = (int)command.ExecuteScalar();

            command.Dispose();

            conexion.Close();
      }
       return numeroRegistros;
}

     

Fíjate que ahora al método le pasamos un parámetro del tipo

int

, que es la edad que queremos filtrar.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *