Solo por no quedarme callado
En java al abrir un recordset se posiciona en el BOF (sea con ADO a SQLServer u Oracle privider) y hay que moverse al siguiente registro, sino obviamente habrá error, en ASP y en varios otros lenguajes el BOF es solo algo teórico al que no puedes acceder, al abrirse la tabla el proveedor te coloca en el primer registro o en el EOF si esta vacía.