Do you realize that
int k = cmd.ExecuteNonQuery();
does not return a record set ? It's used for INSERT, UPDATE, and DELETE, CREATE, ALTER, and etc.
SELECT statements are usually used with
reader = cmd.ExecuteReader();
and you'll need to create a dataReader.