2010-05-04 17 views
42

Quiero llegar al valor que encuentro usando el comando COUNT de SQL. Normalmente ingreso el nombre de la columna al que quiero acceder en el método getInt() getString(), ¿qué hago en este caso cuando no hay un nombre de columna específico?¿Cómo se accede al valor de una consulta de SQL count() en un programa Java?

He usado 'AS' de la misma manera que para alias una tabla, no estoy seguro si esto va a funcionar, creo que no.

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

Respuesta

71

utilizar alias:

SELECT COUNT(*) AS total FROM .. 

y luego

rs3.getInt("total") 
+3

al menos de mi parte, es necesario primero en llamar rs3.next() antes de llamar rs3.getInt ("total") – user2805346

+0

Gracias, tengo algo que preguntarte, ¿podemos chatear? –

4

Yo esperaría que esta consulta para trabajar con su programa:

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

(Es necesario t o alias de la columna, no la tabla)

39

las respuestas suministradas por Bohzo y Brabster, obviamente, trabajar, pero también se podría sólo tiene que utilizar:

rs3.getInt(1); 

para obtener el valor de la primera, y en su caso , solo columna

+4

De Javadoc: "Los valores se pueden recuperar utilizando el número de índice de la columna o el nombre de la columna. En general, usar el índice de columna será más eficiente". –

+1

Este nivel de ajuste de rendimiento realmente no es importante para la mayoría de las aplicaciones. El uso de índices de columna lo expone a errores de columnas que se mueven en su consulta SQL, lo que puede ser difícil de rastrear. En este ejemplo en particular (simplemente tomar un recuento de registros), esto no es un problema, pero es algo a tener en cuenta para la sostenibilidad de la aplicación. –

+0

@PederRicer no podría estar más de acuerdo. Con demasiada frecuencia las personas se centran en micro-optimizaciones cuando la claridad debe ser (casi siempre) el objetivo principal del código –

2

he hecho de esta manera (ejemplo):

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

, necesita llamar al método next() para iniciar el conjunto de resultados. p. while (recSet.next()) { num = recSet.getInt ("..."); } – Hatim

Cuestiones relacionadas