Ecco dove sbagli:
cmd.ExecuteNonQuery();
Tu sei esecuzione di una query.
Devi ExecuteReader
o ExecuteScalar
invece. ExecuteReader viene utilizzato per un set di risultati (più righe/colonne), ExecuteScalar quando la query restituisce un singolo risultato (restituisce object , quindi è necessario trasmettere il risultato al tipo corretto).
var result = (int)cmd.ExecuteScalar();
I results la variabile ora conterrà un OledbDataReader
o un valore con i risultati di SELECT . Puoi scorrere i risultati (per un lettore) o il valore scalare (per uno scalare).