So if I'm following correctly:

Use ExecuteScalar in query's where I only need to return a single value. Seems to me there has to be a reader somewhere but maybe that's getting too technical. Never-the-less, this must be faster than looping through all the rows.

AND

Use a OleDbDataReader in query's where I would want to return multipal values. This would be accomplished by looping.