Aquí es donde te equivocas:
cmd.ExecuteNonQuery();
Tu eres ejecutando una consulta.
Debe ExecuteReader
o ExecuteScalar
en cambio. ExecuteReader se utiliza para un conjunto de resultados (varias filas/columnas), ExecuteScalar cuando la consulta devuelve un único resultado (devuelve object , por lo que el resultado debe convertirse al tipo correcto).
var result = (int)cmd.ExecuteScalar();
Los results La variable ahora tendrá un OledbDataReader
o un valor con los resultados de SELECT . Puede iterar sobre los resultados (para un lector) o el valor escalar (para un escalar).