Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655

    Funzione COUNT MySQL da Java

    Ciao a tutti, sto implementando un'applicazione java che si interfaccia con un Database di tipo MySQL.

    in pratica ho scritto questo:
    codice:
    ResultSet res;
    		Statement cmd;
    		cmd=DbAccess.getConnection().createStatement();	
    		String querySelect;
    		querySelect="SELECT * FROM Transazioni WHERE NUMCONTO="+numConto+";";
    		res=cmd.executeQuery(querySelect);
    
    		String Tansazioni="";
    		//variabile di supporto che mi serve per contare il numero di tuple
    		int i=0;
    		while(res.next()){
    			String tipoOp;
    			if(res.getInt("TIPOOP")==0){
    				tipoOp="ACCREDITO";
    			}else tipoOp="ADDEBITO";
    			Tansazioni=Tansazioni+"OPERAZIONE EFFETTUATA-Tipo Operazione:\""+tipoOp+"\"Data:\""+ res.getDate("DATA")+"\"Ammontare Operazione:\""+res.getFloat("AMMONTAREOP")+"\"€\n";
    		}
    		return Tansazioni;
    	}
    Dunque visto che ho un problema con la comunicazione tra Client e Server in java ho deciso di seguire un'altra strada:
    Per fare questo ho bisogno di fare una query sul database di questo tipo:
    codice:
    SELECT COUNT(*)FROM Transazioni WHERE NUMCONTO="+numConto+
    Ora non sò però come farla eseguire da codice Java, inquanto non voglio che questa mi restituisca un Resultset, ma un semplice int.

    Come posso fare?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Semplicemente non puoi: una istruzione di selezione restituisce sempre e comunque un ResultSet perchè la JVM e il DB non possono sapere a priori di quanti elementi è composta la risposta.
    Quello che dovrai fare è semplicemente prendere il Resultset, farti restituire l'unico Record presente che avrà un solo campo, quindi convertirlo in intero:
    codice:
    ResultSet rs = cmd.executeQuery( ... );
    rs.next();
    int risultato = Integer.parseInt( rs.getString(1) );
    
    oppure
    
    int risultato = rs.getInt(1);
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    Ciao, ma è possibile creare un solo Statement per due query? ovvero:

    codice:
                    ResultSet res,rs;
    		Statement cmd;
    		cmd=DbAccess.getConnection().createStatement();	
    		String querySelect,queryCount;
    		querySelect="SELECT * FROM Transazioni WHERE NUMCONTO="+numConto+";";
    		queryCount="SELECT COUNT(*)FROM Transazioni WHERE NUMCONTO="+numConto+";";
    		//restituisce il ResultSet della tabella
    		res=cmd.executeQuery(querySelect);
    		//restituisce il ResultSet del COUNT
    		rs=cmd.executeQuery(queryCount);
    		int numeroTuple = rs.getInt(1);

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.