Hola,
Creo que
posiblemente el error está aquí:
dentro=true;
while (dentro||rs2.next()){
La primera vez
"dentro" tiene el valor
true. El bucle
while es evaluado como
true, aunque el
resultSet.next() devuelva
false, significando que no hay datos (aunque nunca es evaluada y nunca avanza al siguiente registro).
while (true || false) { // Verdadero ó Falso = Verdadero
// Y al llegar a esta instrucción genera un error:
buscado=rs2.getInt(1); // Puesto que rs2 está antes del primer registro.
}
Saludos,
PS:
Nunca es evaluada por que java utiliza el método
"Short Circuit" contrario a otros lenguajes como Visual Basic que usan
"Long Circuit". Cuando se usa || con varios valores, inmediatamente después que el compilador sabe la respuesta; es decir que sabe que el resultado va a ser
true, no continúa evaluando las expresiones. Por ejemplo:
if (true || myFunc()) {
... myFunc nunca va a ser evaluada, por que el compilador sabe la respuesta antes de evaluarla; sabe que verdadero ó "cualquier cosa (verdadero o falso)" siempre va a ser verdadero. Por lo tanto en tu caso
rs2.next() ... nunca se llega a evaluar, y nunca avanza al primer registro.
http://java.sun.com/docs/books/jls/t...ons.html#15.24