Foros del Web » Programación para mayores de 30 ;) » Java »

Donde pongo el if.....

Estas en el tema de Donde pongo el if..... en el foro de Java en Foros del Web. que tal, estoy programando una aplicacion en java y me han salido muchos detalles que arreglarle o agregarle una de ellas es que al consultar ...
  #1 (permalink)  
Antiguo 27/07/2010, 12:38
 
Fecha de Ingreso: octubre-2009
Mensajes: 6
Antigüedad: 15 años, 1 mes
Puntos: 0
Donde pongo el if.....

que tal, estoy programando una aplicacion en java y me han salido muchos detalles que arreglarle o agregarle una de ellas es que al consultar cierta informacion metiendo como valor la clave de la tabla en una base de datos me devuelva registros, pero si no existe esa clave, que me devuelva un mensaje que me diga que no hay valores para esa clave, he intentado colocarle un if, despues voy a la aplicacion y consulto un valor que se que no existe, y no me manda ningun aviso, solo me salen los null de la base de datos. este es una parte del codigo en donde pienso yo, que iría el if
ojalá que alguien me pudiera ayudar, y de antemano muchas gracias.

Código PHP:
..........
...........
............
.............Class.
forName("sun.jdbc.odbc.JdbcOdbcDriver");

             
String usuario="calidad";
             
String password="calidad";
             
String url="jdbc:odbc:Bitacora";
             
Connection conexion=DriverManager.getConnection(url,usuario,password);



       
String query"select * from fosfato where ClaveBitFosfato='"+ClaveBitFosfato+"'";

       
Statement st=conexion.createStatement();
       
ResultSet rs st.executeQuery(query);
 --------------------------------------------------- > 
en esta parte he estado metiendo el if
          while(
rs.next())
       {
           
//datos de la tabla muestreo
            
FechaBitFosfato=rs.getString(1);
.....
..............
...............  }
      
conexion.close();

   
out.print("<title>CONSULTA DE................... 
  #2 (permalink)  
Antiguo 27/07/2010, 22:50
 
Fecha de Ingreso: mayo-2009
Mensajes: 13
Antigüedad: 15 años, 6 meses
Puntos: 0
Busqueda Respuesta: Donde pongo el if.....

Amigo no te entiendo muy bien la pregunta pero creo que lo que deseas hacer que si exite valor recorrer el Resulset si no presentar mensaje...

// si existen datos recorres el Resultset
if (rs.next()==true){
while (rs.next()){
FechaBitFosfato=rs.getString(1);
}
}
// sino presentas el mensaje de que no existen datos
else {
JOptionPane.showMessageDialog(null, "no hay datos", "Error", JOptionPane.INFORMATION_MESSAGE)

}

Espero que te sirva.............
  #3 (permalink)  
Antiguo 28/07/2010, 03:13
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 9 meses
Puntos: 10
Respuesta: Donde pongo el if.....

Wenas

Cita:
Iniciado por pichon77 Ver Mensaje
// si existen datos recorres el Resultset
if (rs.next()==true){
while (rs.next()){


Estas ejecutando dos rs.next(), es decir, estas yendo al segundo registro.

Saludos.

PD. if (rs.next()==true) es lo mismo que if (rs.next())
__________________
--
NO. Tu problema no es urgente.

CCFVLS
  #4 (permalink)  
Antiguo 28/07/2010, 09:16
 
Fecha de Ingreso: octubre-2009
Mensajes: 6
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Donde pongo el if.....

Gracias por las Respuestas, he tratado de hacer lo que me dicen poniendolo como me dice elAntonie, y lo he acomodado de la manera que me describe pichon77, pero al ingresar una clave no existente se queda pasmado, y al poner una clave existente no me muestra datos y solo me salen null's ,,, asi esta el codigo.....

Código PHP:
import javax.swing.JOptionPane;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.rmi.*;
import java.sql.*;
import java.util.*;

public class 
ConsultaFosfatos extends HttpServlet {
   public 
void doPost (HttpServletRequest requestHttpServletResponse response)     throws ServletException,IOException {
      
PrintWriter out response.getWriter();
      try{
       
response.setContentType("text/html");
       
//PrintWriter out = response.getWriter();
       
HttpSession sesion request.getSession(true);
       
//se reciben los valores del formulario
       
String FechaBitFosfato=request.getParameter("FechaBitFosfato");
           
String .............
                      .................. 
                         ......................

       
//registro de drive

       
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

             
String usuario="calidad";
             
String password="calidad";
             
String url="jdbc:odbc:Bitacora";
             
Connection conexion=DriverManager.getConnection(url,usuario,password);



       
String query"select * from fosfato where ClaveBitFosfato='"+ClaveBitFosfato+"'";

       
Statement st=conexion.createStatement();
       
ResultSet rs st.executeQuery(query);
           if (
rs.next()){
          while(
rs.next())
       {
       
            
FechaBitFosfato=rs.getString(1);
            
ClaveBitFosfato=rs.getString(2);
            
CantDisPatron=rs.getString(3);
            
RefPagDisPatron=rs.getString(4);
            
IdBitSol=rs.getString(5);
            
RefPagFenolftaleina=rs.getString(6);
            
IdBitFenolftaleina=rs.getString(7);
            
RefPagAcidoFuerte=rs.getString(8);
............................
.......................
....................
..............................
           }
           }
           else {
               
JOptionPane.showMessageDialog(null"no hay datos""Error"JOptionPane.INFORMATION_MESSAGE);
           }
      
conexion.close();

   
out.print("<title>CONSULTA DE LA BITACORA FOSFATOS"+
         
"<div align=\"center\"><font  size=\"4\" face=\"Georgia, Times New Roman, Times, serif\">FOSFATO</font>"+
             
"</div>"+
         
"<p>"+
             
"<div align=\"right\"><font  size=\"2\" face=\"Arial\">FECHA</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\">&nbsp;<u>"+FechaBitFosfato+"</u></font>"+
             
"</div>"+
             
"<br />"+
          
"<p><center><font face=\"arial\" size=\"2\">F&Oacute;SFORO TOTAL</font></center>"+
             
"<center><font face=\"arial\" size=\"2\">M&Eacute;TODO CLORURO ESTANOSO</font></center><p>"+
         
"<p>"+
             
"<FONT face=\"arial\" size=\"2\">PROTOCOLO MAFQ-020</FONT><br>"+
             
"<FONT face=\"arial\" size=\"2\">CLAVE MANPMA</FONT><br>"+
             
"<font face=\"arial\" size=\"2\">NMX-AA-029-SCFI-200</font></p>"+
             
"<p>"+
             
"<center>"+
             
"<p>"+
             
"<font face=\"Arial\" size=\"2\">REACTIVOS UTILIZADOS</font></center>"+
             
"<p>"+
             
"<font  size=\"2\" face=\"Arial\">DISOLUCI&Oacute;N PATRON DE DE P COMO PO<sub>4</sub> !=5 mg/L 1ml=</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\">&nbsp;<u>"+CantDisPatron+"</u></font><font face=\"arial\" size=\"2\">mg REF.PAG.</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\">&nbsp;<u>"+RefPagDisPatron+"</u></font>"+
             
"<font face=\"arial\" size=\"2\">DE BP-</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+IdBitSol+"</u></font>"+
             
"<p>"+
             
"<font  size=\"2\" face=\"Arial\">DISOLUCI&Oacute;N de fenolftale&iacute;na ref. p&aacute;g.</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+RefPagFenolftaleina+"</u></font>&nbsp;<font face=\"arial\" size=\"2\">DE BP-</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+IdBitFenolftaleina+"</u></font>"+
             
"<p>"+
             
"<font  size=\"2\" face=\"Arial\">DISOLUCI&Oacute;N de &aacute;cido fuerte ref. p&aacute;g.</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+RefPagAcidoFuerte+"</u></font>&nbsp;<font face=\"arial\" size=\"2\">DE BP-</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+IdBitAcidoFuerte+"</u></font>"+
             
"<p>"+
             
"<font  size=\"2\" face=\"Arial\">Persulfato de Amonio marca.</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+MarcaPersulfato+"</u></font>&nbsp;<font face=\"arial\" size=\"2\">DE BP-</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+IdBitPersulfato+"</u></font>"+
             
"<p>"+
             
"<font  size=\"2\" face=\"Arial\">NaOH  marca</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+MarcaNaOH+"</u></font><font face=\"arial\" size=\"2\">DE BP-</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+IdBitNaOH+"</u></font>"+
             
"<p>"+
             
"<font  size=\"2\" face=\"Arial\">DISOLUCI&Oacute;N molibdato de amonio p&aacute;g.</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+RefPagMolibdato+"</u></font><font face=\"arial\" size=\"2\">DE BP-</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+IdBitMolibdato+"</u></font>"+
             
"<p>"+
             
"<font  size=\"2\" face=\"Arial\">DISOLUCI&Oacute;N cloruro estanoso ref. p&aacute;g.</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+RefPagCloruroEstanoso+"</u></font><font face=\"arial\" size=\"2\">DE BP-</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+IdBitCloruroEstanoso+"</u></font>"+
             
"<p>"+
             
"<font  size=\"2\" face=\"Arial\">Agua destilada garraf&oacute;n No.</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+NumGarrafonAguaDestilada+"</u></font><font face=\"arial\" size=\"2\">DE BP-</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+IdBitGarrafonAguaDest+"</u></font>"+
             
"<p>"+
             
"<font  size=\"2\" face=\"Arial\">H<sub>2</sub>S<sub>4</sub> 1N   ref.pag.</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+RefPagH2S41N+"</u></font><font face=\"arial\" size=\"2\">DE BP-</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+IdBitH2S41N+"</u></font>"+
             
"<p>"+
             
"<font face=\"arial\" size=\"3\">MATERIAL</font>"+
             
"<p>"+
             
"<FONT face=\"ARIAL\" size=\"2\">WINKLER</FONT><BR>"+
             
"<font face=\"ARIAL\" size=\"2\">PIPETAS SEROLOGICAS</font><BR>"+
             
"<FONT face=\"arial\" size=\"2\">VASOS DE PRECIPITADO</FONT><br>"+
             
"<FONT face=\"ARIAL\" size=\"2\">PIPETAS VOLUMETRICAS</FONT><br>"+
             
"<p>"+
             
"<font face=\"ARIAL\" size=\"2\"> SACAR LA MUESTRA ESTANDAR Y DEJAR ATEMPERAR</font>"+
             
"<p>"+
             
"<font face=\"ARIAL\" size=\"2\">Color</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+ColorMuestra+"</u></font>&nbsp;<font face=\"arial\" size=\"2\">Olor:</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+OlorMuestra+"</u></font>&nbsp;<font face=\"arial\" size=\"2\">Solidos Supendidos</font>&nbsp;<font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+SolidosSusp+"</u></font>"+
             
"<p>"+
             
"<font face=\"arial\" size=\"2\">Colocar los winkler en la mesa de trabajo etiquetarlos</font>"+
             
"<br>"+
             
"<font face=\"arial\" size=\"2\">Digesti&oacute;n. Medir en frascos winkler testigo (100 ml de agua destilada), muestra (100 ml o al&iacute;cuota), duplicado (igual que la muestra), fortificado (al&iacute;cuota de muestra + 10 ml de disoluci&oacute;n patr&oacute;n), est&aacute;ndar (10 ml de la disoluci&oacute;n patr&oacute;n).</font>"+
             
"<br>"+
             
"<font face=\"arial\" size=\"2\">Verificar pH agregando 2 gotas de fenolftale&iacute;na, si da color rosa agregar &aacute;cido sulf&uacute;rico 1N gota a gota hasta desaparici&iacute;n del color."+
             
"<br>"+
             
"<font face=\"arial\" size=\"2\">aproximadamente 0.4 g de persulfato de amonio y 1 ml de disoluci&oacute;n de &aacute;cido fuerte, agitar.</font>"+
             
"<br>"+
             
"<font face=\"arial\" size=\"2\">Poner su tap&oacute;n a los winkler y tapar con papel aluminio y meterlos a la autoclave  a 15 lb de presi&oacute;n por 30 minutos en BE-</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+IdBitAutoclave+"</u></font><font face=\"arial\" size=\"2\">hora inicia a 15 lb</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+HoraIni15lb+"</u></font><font face=\"arial\" size=\"2\">Hora termina a 15 lb</font><font face=\"arial\" size=\"2\" color=\"mediumblue\"><u>"+HoraFin15lb+"</u></font>"+
             
"<br>"+................
...........................................................
.......................................................................
             );
           
         }
     catch(
Exception e){
            
out.println("ocurrio un error en main" e);
     }

   }

  #5 (permalink)  
Antiguo 28/07/2010, 11:34
 
Fecha de Ingreso: noviembre-2006
Mensajes: 56
Antigüedad: 18 años
Puntos: 1
Respuesta: Donde pongo el if.....

Hola, JOptionPane es para aplicaciones swing, en su lugar tendrás que hacer un out.print... Como te han dicho antes, tienes dos next() por tanto te estás situando en el segundo registro, sustituye el primer next() por isBeforeFirst() a ver que tal va.

Un Saludo.
  #6 (permalink)  
Antiguo 28/07/2010, 13:32
 
Fecha de Ingreso: octubre-2009
Mensajes: 6
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Donde pongo el if.....

ok lo he cambiado por el out.print y tambien he cambiado el next() por isBeforeFirst()
y me sale el siguiente error::

ocurrio un error en mainjava.sql.SQLException: Result set type is TYPE_FORWARD_ONLY


segun lo que lei a cerca de este error:

Para poder utilizar estos nuevos métodos es necesario definir un resultado desplazable, lo cual se consigue a la hora de crear la sentencia con una nueva sintaxis de la sentencia createStatement:

public Statement createStatement (int resultSetType,
int resultSetConcurrency) throws SQLException

Al utilizar esta sintaxis se genera una sentencia que utilizará un resultset de un tipo y concurrencia determinados, que son las nuevas características implementadas en JDBC 2.0.

Los tipos de resultset vienen dados por las siguientes constantes:

ResultSet.TYPE_FORWARD_ONLY
ResultSet.TYPE_SCROLL_INSENSITIVE
ResultSet.TYPE_SCROLL_SENSITIVE

En el tipo ResultSet.TYPE_FORWARD_ONLY el cursor sólo puede moverse hacia delante.

El tipo ResultSet.TYPE_SCROLL_INSENSITIVE es un tipo de resultset en el que el acceso es deplazable pero que no es sensitivo al cambio de otros usuarios. Esto significa que mientras esté abierto el resultset, si otro usuario realiza algún cambio en alguno de los datos, éstos no se reflejarán (se quedarán en el mismo estado y valor que tenían al abrir el resultset).

El tipo ResultSet.TYPE_SCROLL_SENSITIVE es como el anterior, pero el resultset es sensitivo al cambio de otros usuarios. Esto significa que mientras esté abierto el resultset, si otro usuario realiza algún cambio en alguno de los datos, éstos ser reflejarán en nuestro resultset.

La concurrencia al resultset viene dada por las siguientes constantes:

ResultSet.CONCUR_READ_ONLY
ResultSet.CONCUR_UPDATABLE

En el primer caso, la concurrencia es de sólo lectura, mientras que en la segunda es posible realizar operaciones de actualización.

Así, si se desea acceder a los registros de la tabla Clientes, en modo de sólo lectura y que pueda desplazarse en el resultset, habría que crear la sentencia de la siguiente manera:

sentencia = conexion.createStatement (
ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);

El modo estándar, si no se especifica nada en la creación de la sentencia, es del tipo TYPE_FORWARD_ONLY y de concurrencia CONCUR_READ_ONLY, es decir, un resultset no desplazable (el cursor sólo se mueve hacia delante) y de sólo lectura, tal y como hereda de la especificación JDBC 1.0.

Cuando se crea un cursor que no es de tipo TYPE_FORDWARD_ONLY, se puede acceder libremente a los registros (es desplazable),

link Info: [URL="http://club.telepolis.com/mydream/Java/BDatos/BDConsul.html"]http://club.telepolis.com/mydream/Java/BDatos/BDConsul.html[/URL]
  #7 (permalink)  
Antiguo 29/07/2010, 06:16
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: Donde pongo el if.....

Donde pones el if(ojo) pones el else(bala)... :P

El uso de if(rset.next()) o while(rset.next()) depende de si obtienes una única fila de resultados o si vas a obtener más filas (En ese caso mejor el while)

Etiquetas: pongo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:24.