Java - resulset vacio

   
Vista:

resulset vacio

Publicado por Javier Galban Alonso jgalbanalonso@gmail.com (4 intervenciones) el 18/09/2015 02:43:31
Gracias ante todo. Mi problema es que necesito hacer una excepción con un mensaje en java cuando hago una consulta a la base de datos postgresql y el resultset sale vacio es decir cuando la consulta no encuentra datos en la base de datos, y cuando el resultset no este vacío ejecutar un código para llenar una tabla con los datos encontrados al ejecutar la consulta. saludos
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

resulset vacio

Publicado por Javier Galban Alonso (4 intervenciones) el 18/09/2015 04:24:31
ayudenme con este problema por favor la parte que no puedo hacer es verificar si el resultset esta vacio para lansar la exepcion siempre me da error
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

resulset vacio

Publicado por sunwalker (1 intervención) el 18/09/2015 04:46:52
Hola Javier.
Entiendo que quieres mostrar una excepción si el ResultSet esta vacío, pero creo que es mucho más practico colocar un mensaje un printf o MessageDialog para que te indique que no hay registros.
¿Porque quieres utilizar una excepción?
Bueno solo tu lo sabes.
Aquí hay un vídeo de como crear nuestras propias excepciones.

https://www.youtube.com/watch?v=4sq2S8YZAdg

Saludos!!
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

resulset vacio

Publicado por Thanatos (69 intervenciones) el 19/09/2015 00:56:21
Como sunwalker te indicó, lanzar una excepción no parece lo más indicado para un ResultSet vacío, con un mensaje informativo sería suficiente en la mayoría de los casos.

1
2
3
4
5
6
7
8
if (resultados.next()) {
    resultados.beforeFirst();
    // Aqui escribes las operaciones que necesites
    // realizar con los resultados de la consulta.
} else {
    // El ResultSet está vacío
}
resultados.close();

Si realmente necesitas lanzar una excepción, podrías hacerlo dentro del bloque else del anterior código.

Saludos...
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

resulset vacio

Publicado por Javier Galban Alonso jgalbanalonso@gmail.com (4 intervenciones) el 19/09/2015 05:23:09
disculpa es que no me explique bien lo que necesito es mostrar un mensaje en el visual cuando el resultset este vacio. y si no esta vacio poner los datos en una tabla. la parte que me da problema es como le dije anteriormente es en el momento de mostrar el mensaje. aqui le muestro el codigo:

String dia= String.valueOf(jComboBox1.getSelectedItem());
String mes = String.valueOf(jComboBox2.getSelectedItem());
String año = String.valueOf(jComboBox3.getSelectedItem());
DefaultTableModel table = new DefaultTableModel();
Object[] col = new Object[2];
col[0]= "Fecha";
col[1]= "Pregunta";
table = new DefaultTableModel(col, 0);

try
{
if(dia.equals("Día"))
JOptionPane.showMessageDialog(this, "Seleccione un Día");
else if(mes.equals("Mes"))
JOptionPane.showMessageDialog(this, "Seleccione un Mes");
else if(año.equals("Año"))
JOptionPane.showMessageDialog(this, "Seleccione un Año");
else
{

coneccion c = new coneccion();
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection(c.getDireccion(),c.getUser(), c.getPassword());
Statement stmt = con.createStatement();
Statement stmt1 = con.createStatement();
ResultSet rs= stmt.executeQuery("select fecha from preguntas where fecha ="+"'"+año+"-"+mes+"-"+dia+"'");
ResultSet rs1= stmt1.executeQuery("select pregunta from preguntas where fecha ="+"'"+año+"-"+mes+"-"+dia+"'");
if(rs.next() && rs1.next())
{
//rs.beforeFirst();
//rs1.beforeFirst();
while((rs.next())&&(rs1.next())){
//textAutoAcompleter.addItem(rs.getString(1));
//table.addRow(new Object[]{rs.toString()});

Object []aux= new Object[2];
aux[0]=rs.getString("Fecha");
aux[1]=rs1.getString("Pregunta");

table.addRow(aux);
table.setColumnIdentifiers(col);
jTable1.setModel(table);
}}
else
JOptionPane.showMessageDialog(this, "mensaje que quiero mostrar");

rs.close();
rs1.close();

stmt.close();
stmt1.close();
con.close();

}
}

catch(Exception ex){
JOptionPane.showMessageDialog(this, "Inserte los Valores Correctamente");
}
cuando el resultset esta vacio si me muestra el mensaje pero cuando contiene datos no hace lo que esta dentro del if.
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

resulset vacio

Publicado por Javier Galban Alonso jgalbanalonso@gmail.com (4 intervenciones) el 19/09/2015 01:08:52
Muchas gracias. Disculpen es que no me explique bien realmente lo que necesito es lanzar un mensaje cuando el resultset este vacío. Saludos
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

resulset vacio

Publicado por noveo (2 intervenciones) el 19/09/2015 18:35:21
Hola.
Tiene mucha razón Thanatos
Deberías hacer algo similar al ejemplo que coloco.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
while((rs.next())&&(rs1.next()) {
/**
**Verificamos que no este vacío nuestro ResultSet
**/
if( rs != null && rs1 != null) {
/**
**Si no están vacíos cualquiera de los dos ResultSet
**se llena los campos del JTable
**/
Object []aux= new Object[2];
aux[0]=rs.getString("Fecha");
aux[1]=rs1.getString("Pregunta");
table.addRow(aux);
table.setColumnIdentifiers(col);
jTable1.setModel(table);
} else {
/**
**Si no encuentra algún registro mostrar el mensaje de error,
**/
out.printf("Registro no encontrado");
showMessageDialog(null, "Los registros no fueron encontrados" , "Error", ERROR_MESSAGE);
 }
}
Saludos!!!
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