Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65

    [JSP]Problema con doppio rs.next()

    Ciao a tutti,

    ho il seguente codice che legge dei "casiclinici" da un DB e me li stampa con un ciclo while. Dopodichè passo avanti ad altre pagine che me li modificano così che poi non debbano più comparire nell'elenco. Quindi vorrei far uscire una scritta del tipo "Non ci sono più casi clinici".

    Il problema (penso) è che ci sono 2 rs.next() in questo pezzo di codice, quindi mi "perdo" il primo risultato della query.


    codice:
    <% 
    	String specializzazione=request.getParameter("specializzazione");
    	
    	
    	Class.forName ("com.mysql.jdbc.Driver");
    Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/enterprise");
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT distinct c.id_casoclinico,nome, cognome,gradourgenza FROM casoclinico as c JOIN interrogazione as i ON c.id_casoclinico=i.id_casoclinico where c.specializzazione='"+specializzazione+"' AND i.risposta is null order by gradourgenza;"); 
    %>
    
    
    
    <% if(rs.next()) {
    
    
    while(rs.next())
    		{
    		int num = rs.getInt("id_casoclinico");
    		out.println(" ID:"+rs.getInt("id_casoclinico")+"  Nome Paziente:"+rs.getString("nome")+" Cognome Paziente:"+rs.getString("cognome")+" Grado urgenza:"+rs.getString("gradourgenza")+"");
    		%>  Avanti  
    
    <%
    		}
     
    		}
    		
    		else
    	
    		out.println("Non ci sono ulteriori casi");%>
    
     <% rs.close();
     stmt.close();
     conn.close(); 
     %>




    Come posso risolvere?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    togli l'if, non serve: nel while, se non dovesse avere un next (ossia, la query è vuota) ti esce senza stampare niente.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    appunto quando il while finisce esce e nn scrive nulla, invece io vorrei che allora e solo allora mi scrivesse tipo "Non c'è piu niente"....

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    53
    togli il primo if e lascia solo il while, poi dopo il while:

    codice:
    <%
    
    if(!rs.first()) {
             out.println("Non ci sono ulteriori casi");
    }
    %>
    cosi se il resultset e' vuoto il first() e' false

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    ora ho un problema simile che nn so risolvere: devo stampare UNA VOLTA i valori nella prima out.println e poi stampare TUTTE le coppie domanda/risposta associate a un determinato casoclinico (ottengo ciò con la query)
    Il problema è che anche qui coi 2 rs.next() perdo il primo risultato.
    Come posso risolverlo e con che comandi? Magari con un rs.first da qualche parte?
    codice:
    <% 
    	String id_casoclinico=request.getParameter("id_casoclinico");
    	
    	Class.forName ("com.mysql.jdbc.Driver");
    Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/enterprise");
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM casoclinico as c LEFT OUTER JOIN interrogazione as i ON c.id_casoclinico=i.id_casoclinico WHERE c.id_casoclinico='"+id_casoclinico+"';"); 
    
    
     %>
     
     <h3>Dettagli del caso clinico</h3>
    	
    <% rs.next();
    			out.println(" ID Caso Clinico:"+id_casoclinico+" Nome Paziente:"+rs.getString("nome")+" Cognome Paziente:"+rs.getString("cognome")+" Grado Urgenza:"+rs.getString("gradourgenza")+" Data di nascita Paziente:"+rs.getString("datanascita")+" Residenza Paziente:"+rs.getString("residenza")+" Specializzazione:"+rs.getString("specializzazione")+" Username Medico Remoto:"+rs.getString("user_remoto")+" Data Ricovero Paziente:"+rs.getString("dataricovero")+" ");%>
    
       
    		
    Anamnesi: 
    <textarea name="anamnesi" rows="6" cols="40" readonly="readonly" ><%out.println(rs.getString("anamnesi"));%></textarea> 
    
    		
    Sintomatologia: 
    <textarea name="sintomatologia" rows="6" cols="40" readonly="readonly" ><%out.println(rs.getString("sintomatologia"));%></textarea>
    
    
    		
    Diagnosi Ipotizzata: 
    <textarea name="diagnosiipo" rows="6" cols="40" readonly="readonly" ><%out.println(rs.getString("diagnosi"));%></textarea>
    
    
    	
    	
    	<hr>
    	<h3>Quesiti relativi al caso clinico</h3>
    	
    
    </p>
    
    	
     <% 
     
     while(rs.next())
    		{ 
    		
     %>
     
    Domanda: 
    <textarea name="domanda" rows="6" cols="40" readonly="readonly" ><%out.println(rs.getString("domanda"));%></textarea> 
    		
    
    
    		
    Risposta: 
    <textarea name="risposta" readonly="readonly" rows="6" cols="40" ><%out.println(rs.getString("risposta"));%></textarea> 
    
    
     
     
    <% }
     %>
    grazie...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    up...

  7. #7
    metti tutto sotto un unico ciclo while eliminando il primo rs.next(). Tramite una variabile booleana dichiarata prima del ciclo decidi se far stampare o no ciò che tu attualmente stampi dopo il primo rs.next():

    codice:
    boolean stampa_info_paziente = true;
    while (rs.next()){
         if(stampa_info_paziente){
              out.println(" ID Caso Clinico:"+id_casoclinico+" Nome Paziente:"+rs.getString("nome")+" Cognome Paziente:"+rs.getString("cognome")+" Grado Urgenza:"+rs.getString("gradourgenza")+" Data di nascita Paziente:"+rs.getString("datanascita")+" Residenza Paziente:"+rs.getString("residenza")+" Specializzazione:"+rs.getString("specializzazione")+" Username Medico Remoto:"+rs.getString("user_remoto")+" Data Ricovero Paziente:"+rs.getString("dataricovero")+" ");%>
    
       
    		
    Anamnesi: 
    <textarea name="anamnesi" rows="6" cols="40" readonly="readonly" ><%out.println(rs.getString("anamnesi"));%></textarea> 
    
    		
    Sintomatologia: 
    <textarea name="sintomatologia" rows="6" cols="40" readonly="readonly" ><%out.println(rs.getString("sintomatologia"));%></textarea>
    
    
    		
    Diagnosi Ipotizzata: 
    <textarea name="diagnosiipo" rows="6" cols="40" readonly="readonly" ><%out.println(rs.getString("diagnosi"));%></textarea>
    
    
    	
    	
    	<hr>
    	<h3>Quesiti relativi al caso clinico</h3>
    	
    
     </p>
    
    	
     <% 
     
              stampa_info_paziente == false;
         }
    
    %>
     
         Domanda: 
    <textarea name="domanda" rows="6" cols="40" readonly="readonly" ><%out.println(rs.getString("domanda"));%></textarea> 
    		
    
    
    		
         Risposta: 
    <textarea name="risposta" readonly="readonly" rows="6" cols="40" ><%out.println(rs.getString("risposta"));%></textarea> 
    
    
     
     
    <% }
    
    
    
    }
    Controlla bene i vari tag jsp.. magari col copia e incolla mi sono perso qualcosa per strada
    Al mio segnale... scatenate l'inferno!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.