Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    Creare una query dinamicament in java...

    Salve ragazzi,
    ho un problema e vorrei un aiuto per risolverlo.
    Nella mia applicazione web in jsf ho una pagina con quattro menu a tendina che permette,scegliendo un valore per ogni tendina di specificare dinamicamente le clausole da porre nel where della query dinamica che l'applicazione genererà.
    La query di base è

    select * from utente;

    questi 4 pannelli contengono nazione,città,età,nome e l'utente selezionando uno,due,tre o quattro di questi può restringere o meno i risultati della query.
    Quello che voglio è creare dinamicamente la query. Ho aggiunto ad ogni tendina il valore "qualsiasi",che se selezionato non aggiunge nulla alla query.
    ho creato
    codice:
    string query="select * from utente";
    
    List queryStruct=new ArrayList();
    queryStruct.add(nazione);
    queryStruct.add(città);
    queryStruct.add(età);
    queryStruct.add(nome);
    adesso dovrei scorrere questa lista,aggiungere alla PRIMA OCCORRENZA di un valore diverso da "qualsiasi" la clausola where alla stringa query con il parametro selezionato,continuare a scorrere la lista e aggiungere dalla seconda occorrenza in poi di un valore solo il parametro alla clausola where....facile a parole per me,mi dareste una mano col codice?
    Grazie mille

  2. #2
    prova così:
    codice:
    string query="select * from utente";
    
    List queryStruct=new ArrayList();
    queryStruct.add(nazione);
    queryStruct.add(città);
    queryStruct.add(età);
    queryStruct.add(nome);
    
    boolean entrato=false;
    
    if (!queryStruct.get(0).equals("qualsiasi"))
    {
            query+=" nazione='"+queryStruct.get(0)+"'";
            entrato=true;
    }
    if (!queryStruct.get(1).equals("qualsiasi"))
    {
         if (entrato)
             query+=" and citta='"+queryStruct.get(1)+"' ";
         else
         {
              query+=" citta='"+queryStruct.get(1)+"'";
              entrato=true;
         }
    }
    if (!queryStruct.get(2).equals("qualsiasi"))
    {
         if (entrato)
             query+=" and eta='"+queryStruct.get(2)+"' ";
         else
         {
              query+=" eta='"+queryStruct.get(2)+"'";
              entrato=true;
         }
    }
    if (!queryStruct.get(3).equals("qualsiasi"))
    {
         if (entrato)
             query+=" and nome='"+queryStruct.get(3)+"' ";
         else
         {
              query+=" nome='"+queryStruct.get(3)+"'";
              entrato=true;
         }
    }
    stex1984

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.