Eh, effettivamente in C# ho visto che i risultati delle count() cono abbastanza delicati.
Se volessi utilizzare il Get giusto di un Datareader (nel caso non usi ExecuteScalar ma ExecuteQuery) ho riscontrato che il risultato di un count varia in lunghezza di interi da dbms a dbms....
Ad esempio Access restituisce un int32, MySql un int64, come gli rode insomma.
L'unica alternativa che avevo trovato era fare una forzatura, ovvero:
Int64 num = Int64.Parse(dr.GetValue(n).ToString());
Così sembra rozzo ma è un sistema che funziona con qualsiasi dbms....