Un'implementazione generica per il metodo ExecuteScalar

di Daniele Bochicchio, in ASP.NET 2.0, ADO.NET, Generics,

I Generics sono una delle novità più interessanti del .NET Framework 2.0 e l'utilizzo dei metodi generici si rivela in molti casi molto utile, perchè consente di scrivere metodi dall'implementazione generica, ma perfettamente tipizzata.

Il tipico caso è un metodo che faccia da wrapper per il metodo ExecuteScalar del Command di ADO.NET, così da fornire una sola implementazione utile a restituire il tipo del valore di ritorno già pronto per l'utilizzo:

private static T ExecuteScalar<T>(string sql, SqlParameter[] parameters)
{
  using (SqlConnection conn = new SqlConnection(connectionString))
  {
    conn.Open();

    using (SqlCommand command = new SqlCommand(sql, conn))
    {
      if (parameters!= null)
        command.Parameters.AddRange(parameters);

      return (T)command.ExecuteScalar();
    }
  }
}

Il vantaggio di questo approccio è che il metodo è perfettamente utilizzabile con qualsiasi tipo di ritorno, senza necessità di effettuare casting.
Il tipico utilizzo potrebbe essere il seguente:

int totalRecords = ExecuteScalar<int>("SELECT COUNT(*) FROM authors", null);

In questo caso si recupera l'intero corrispondente al numero di record in maniera tipizzata e senza necessità di aggiungere

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi