Java - verificar si hay un unico registro con ResultSet

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

verificar si hay un unico registro con ResultSet

Publicado por Jhoan (3 intervenciones) el 01/11/2018 21:09:46
Hola, este es mi primera consulta en el foro.
estaría agradecido si me pudieran ayudar con esta duda:
estoy haciendo un proyecto con ojdbc6 y en un metodo queria verificar la existencia de un unico registro en una tabla. intente usando rs.Next() como venia haciendo desde el principio pero no me funciona, buscando averigue que lo que hace rs.Next() es moverme el cursor al siguiente registro. Intente usando otros como Absolute(1), getRow, First, pero nada me eso me ha funcionado, me salian errores como Juego de resultados agotado y asi. Me podrian ayudar a saber de que forma puedo hacerlo?

Código simplificado de lo que trato de hacer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static void completar(vtn6b v6b) {
 
    try (Connection connection = DriverManager.getConnection(url, user, pass)) {
        System.out.println("Conectado");
 
       String numeroDocumento = v6b.jTfDocumentoConsulta.getText();
 
       ResultSet rst1 = s.executeQuery("Select from Tablax where documendo = 'numeroDocumento'");
 
       if (rst1.next()) {
            System.out.println("Paso");
            v6b.jTfNumeroDocumento.setText(rst1.getString(1));
 
        } else {
 
            IO.mostrar("Documento no encontrado en la base de datos");
 
        }
 
    } catch (SQLException a) {
        System.out.println("error " + a.getMessage());
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

verificar si hay un unico registro con ResultSet

Publicado por Yamil Bracho (2315 intervenciones) el 01/11/2018 21:15:45
Esta bien. ResultSet coloca el cursos antes de la primera fila, la primera vez y la llamada a rs.next() lo mueve al siguiente registro.
Tambien tienes el metodo isBeforeFirst() ) que retorna false si el cursor no esta antes del primer registro o si no hay filas en el ResultSet

Revisa tambien si tu sentencia SQL esta retornando registros ejecutandole en tu RDBMS.
Adicionalemnte trata de usar sentencias preparadas para evitar SQL Injection
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

verificar si hay un unico registro con ResultSet

Publicado por Jhoan (3 intervenciones) el 01/11/2018 22:49:24
Gracias por tu respuesta, resulta que después de ese sql injection (no sabia que se llamaba asi) tenia unos cuantos mas y me dio por ocultarlos para ver que pasaba y ahora si me funciono Next() ni idea de porque. me podrias decir con un ejemplo que es una sentencia preparada, disculpa la molestia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

verificar si hay un unico registro con ResultSet

Publicado por Billy Joel (874 intervenciones) el 01/11/2018 21:31:34
yo cambiaría el query por algo como:
1
"Select count(*) from Tablax where documendo = 'numeroDocumento'"

Siempre devuelve un registro numérico entero y ese registro lo usas para saber si el documento tiene o no tiene registros asociados
1
2
3
4
5
6
7
if (rst1.next()) {
    if(rs.getInt(1) > 0){
        System.out.println("Paso");
    } else {
        IO.mostrar("Documento no encontrado en la base de datos");
    }
}

PD: He usado frágmentos de tu código para ilustrar mi respuesta ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

verificar si hay un unico registro con ResultSet

Publicado por Jhoan (3 intervenciones) el 01/11/2018 22:49:49
muchas gracias por responder
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

verificar si hay un unico registro con ResultSet

Publicado por Yamil Bracho (2315 intervenciones) el 01/11/2018 23:17:20
Con un preparedStatement seria algo como :

1
2
3
4
5
6
7
8
9
String numeroDocumento = v6b.jTfDocumentoConsulta.getText();
String sql = "SELECT * FROM Tablax WHERE documendo = ?";
PreparedStatement ps = connection.prepareStatement(sql);
 
ps.setString(1, numeroDocumento);
ResultSet rs = ps.executeQuery();
 
...
ps.close()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar