Hay que evitarlo porque tienes la base de datos abierta mientras dure el bucle, pero aqui solo te traes un registro y cierras. Otra cosa es que no sea aconsejable hacer el order by, porque haces trabajar a la base de datos, y eso si que lo puedes cambiar por un sort a tu tabla interna, pero entonces te tienes que traer todos los registros que cumplan tu condicion, lo que conlleva gasto de ancho de banda. Cada cosa tiene sus pros y sus contras. Y para gustos los colores.
Espero que te haya servido de algo mi aclaración. Yo he visto las dos tecnicas en la misma empresa.