Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    669

    Ricerca Record nel ResultSet

    Creo un result set in questo modo:

    Connection _cnDati;
    ResultSet _rsDati;
    Statement _cmd;

    _cmd = _cnDati.createStatement(ResultSet.TYPE_SCROLL_SENS ITIVE,ResultSet.CONCUR_UPDATABLE);

    _rsDati = _cmd.executeQuery("Select * from impiegati");

    tutto funziona correttamente, vorrei però al suo interno ricercare un valore preciso di un campo. Per esempio nella tabella è presente il campo IDImp e vorrei ricercare il record con IDImp uguale a 10. E' possibile? come posso fare altrimenti?

    ciao e grazie per l'aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    15

    Re: Ricerca Record nel ResultSet

    perchè non ti fai una select dinamica di questo tipo:

    codice:
    _rsDati = _cmd.executeQuery("Select * from impiegati where IDImp = " + idimp);
    dove idImp è un variabile che passi alla routine durante l'esecuzione del programma

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    669
    ma se faccio cosi il result set conterrà solo il record con idimp = 10. io invece voglio poter spostarmi sul record interssato ma poter allo stesso tempo gestirli tutti.

    praticamente vorrei una specie di absolute ma passando come valore non un numero di riga ma il valore di un campo di un determinato record.

    ciao grazie

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    non si può
    devi ciclare il result set e cercare il record con il valore corretto

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    15
    potresti creati una classe model, un po' come questa:

    codice:
    public class Model {
    
    	private String column1; //qui io metterei il nome della colonna
    	private String column2;
    	private String column3;
    	private String column4;
    	
    	public Model(String column1, String column2, String column3, String column4) {
    		this.column1 = column1;
    		this.column2 = column2;
    		this.column3 = column3;
    		this.column4 = column4;
    	}
    
    	public String getColumn1() {
    		return column1;
    	}
      
    	public String getColumn2() {
    		return column2;
    	}
    
    	public String getColumn3() {
    		return column3;
    	}
    
    	public String getColumn4() {
    		return column4;
    	}
    	
    	
    }
    ti crei una lista che viene popolata con tutti i model creati, una cosa del genere:

    codice:
    public List eseguiQuery {
    Connection _cnDati;
    ResultSet _rsDati;
    Statement _cmd;
    
    _cmd = _cnDati.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    
    _rsDati = _cmd.executeQuery("Select * from impiegati");
    List records = new ArrayList();
    
    while(_rsDati.next()) {
    
         Model mdl = new Model(_rsDati.getString("columnName1"), //potrebbe essere IDImp
                _rsDati.getString("columnName2"),
                _rsDati.getString("columnName3"),
                _rsDati.getString("columnName4")
               );
        records.add(mdl);
    }
    return records;
    dopo fai scorrere la lista e cerchi il valore che ti serve

    codice:
    public Model cerca(String idImp) {
         List records = eseguiQuery();
         Model recTrovato = null;
         for(int i = 0, n = records.size(); i < n; i++) {
                Model mdl = (Model) records.get(i)
                if(mdl.getColumn1().equals(idImp)) {
                        recTrovato = mdl;
                        break;
                }
          }
          return recTrovato;
    questa restituisce null se non trova nessun valore che è adeguato alla tua richiesta oppure ti ritorna il Model del record che ti serve

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    669
    potresti creati una classe model, un po' come questa:
    Sarebbe interessante come soluzione, il problema che una volta creata la lista se sul DB avvengono delle modifiche io non le visualizzerei, quindi mi sa che mi tocca crearmi una funzione di ricerca ciclica all'interno della classe.

    grazie a tutti per l'aiuto.

    solo un'altra domanda (scusate ma sono ai primi passi), con il resultset che ho creato se un'altro utente modifica dei record in tabella io scorrendo il resultset ne vedo le modifiche, se invece un'altro utente effettua un'inserimento io il nuovo record non lo visualizzo.
    Al momento per ovviare al problema ricarico a ogni spostamento di record il resultset ridigitando:

    _rsDati = _cmd.executeQuery("Select * from impiegati");

    E' una soluzione veloce e indolore perchè l'ho lanciata su una tabella da 37000 record e non ho risentito di alcun calo di prestazioni, ma è realmente questo l'unico modo per aggiungere al result set anche i nuovi record?

    ciao grazie a tutti per l'aiuto.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    15
    secondo me è l'unico modo

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.