NA1TM3R,
Utilizando tu primera forma cargas menos la memoria de tu PC, pero tiene la desventaja de que la conexión se queda abierta hasta que tú la cierres. Esa primera forma va leyendo los registros de la base de datos directamente.
La segunda forma, y la que más me gusta, es llenar un dataset. Al hacer Fill, .NET se encarga de abrir y cerrar la conexión automáticamente. Lo que hace la 2da. forma es cargar en memoria los registros que hayas realizado en tu Select. Es como cargar en un arreglo todos los registros