2010-05-04 9 views
42

Desidero ottenere il valore che sto trovando utilizzando il comando COUNT di SQL. Di solito inserisco il nome della colonna che voglio accedere al metodo getInt() getString(), cosa faccio in questo caso quando non c'è un nome di colonna specifico.Come si accede al valore di una query SQL count() in un programma Java

Ho usato "AS" nello stesso modo in cui è usato per l'alias di un tavolo, non sono sicuro che questo funzionerà, non penso.

Statement stmt3 = con.createStatement(); 
ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) FROM "+lastTempTable+") AS count"); 
    while(rs3.next()){ 
    count = rs3.getInt("count"); 
    } 

risposta

71

Utilizzare alias:

SELECT COUNT(*) AS total FROM .. 

e poi

rs3.getInt("total") 
+3

almeno da parte mia, ha bisogno prima di chiamare rs3.next() prima di chiamare rs3.getInt ("totale") – user2805346

+0

Grazie, ho qualcosa da chiederti, possiamo chattare? –

4

mi sarei aspettato questa query per lavorare con il vostro programma:

"SELECT COUNT(*) AS count FROM "+lastTempTable+")"

(Devi t o alias la colonna, non la tabella)

39

le risposte fornite dai Bohzo e Brabster ovviamente funzionerà, ma si potrebbe anche semplicemente usare:

rs3.getInt(1); 

per ottenere il valore nel primo e nel tuo caso , solo colonna.

+4

Da Javadoc: "I valori possono essere recuperati utilizzando il numero di indice della colonna o il nome della colonna.In generale, l'utilizzo dell'indice di colonna sarà più efficiente." –

+1

Questo livello di ottimizzazione delle prestazioni in realtà non è importante per la maggior parte delle applicazioni. L'uso degli indici delle colonne ti espone agli errori delle colonne che si spostano nella tua query SQL, che può essere difficile da rintracciare. In questo particolare esempio (semplicemente prendendo un numero di record), questo non è un problema, ma è qualcosa da tenere a mente per la sostenibilità delle applicazioni. –

+0

@PederRicer non potrebbe essere più d'accordo. Troppo spesso le persone si concentrano sulle micro-ottimizzazioni quando la chiarezza dovrebbe (quasi sempre) essere l'obiettivo principale del codice –

2

ho fatto in questo modo (esempio):

String query="SELECT count(t1.id) from t1, t2 where t1.id=t2.id and t2.email='"[email protected]"'"; 
int count=0; 
try { 
    ResultSet rs = DatabaseService.statementDataBase().executeQuery(query); 
    while(rs.next()) 
     count=rs.getInt(1); 
} catch (SQLException e) { 
    e.printStackTrace(); 
} finally { 
    //... 
} 
1
Statement stmt3 = con.createStatement(); 

ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) AS count FROM "+lastTempTable+" ;"); 

count = rs3.getInt("count"); 
+0

, è necessario chiamare il metodo next() per avviare il set di risultati. ad es. while (recSet.next()) { num = recSet.getInt ("..."); } – Hatim

Problemi correlati