2009-10-07 15 views
5

Hola aquí es lo que quiero, me conecto a una base de datos y recuperar el elemento más importante de la columna de ID Única, y asignarlo a una variable entera llamada Maxid, aquí está mi enfoque:conjunto de resultados Java, utilizando la función de SQL MAX

int maxID = 0; 
Statement s2 = con.createStatement(); 
s2.execute("SELECT MAX(UniqueId) FROM MyTable");  
ResultSet rs2 = s2.getResultSet(); // 
while (rs2.next()){ 
    maxID = rs2.getInt(0); 
} 

Cuál sería una manera decente de resolver esto, se siente como una manera muy cruda usando "rs2.next()" mientras se repite.

Gracias

Respuesta

10
if (rs2.next()) { 
    maxID = rs2.getInt(1); 
} 
1

.Next() es para volver a colocar el cursor de 'la nada' a una fila en su caso.

puede probarlo si lo desea, es recomendable que lo haga, por lo que no puede escapar ese bucle while. Aunque si está seguro de que la consulta sólo devolverá una sola fila, usted puede hacer esto

if (rs.next()) { 
    maxID = rs2.getInt(1); 
} 
+0

parece una buena idea, pero, cuando cambio el anterior Eclipse se visualiza este error: Descripción de Recursos \t \t Ruta \t \t Localización Tipo No se puede invocar getInt (int) en el tipo primitivo booleano \t Alertmail.java \t/AlertMail/src \t línea 33 \t Problema de Java – Hellnar

+0

sí, 'next()' devuelve un booleano, y por lo tanto funciona en el bucle 'while()'. – akf

+0

sí, tiene razón, necesita reposicionar el cursor antes de que pueda obtener datos, apresuré mi respuesta. No debería estar mirando las preguntas a esta hora de la noche. Voy a editar mi respuesta – Juparave

9

Boris Pavlović era casi justo.

if (rs2.next()) { 
    maxID = rs2.getInt(1); 
} 

Las columnas en un conjunto de resultados están basadas en 1. Y el motivo para usar if en lugar de while es que la consulta que está ejecutando solo devuelve una sola fila.

+0

Acabo de arreglar la respuesta y le di +1 –

Cuestiones relacionadas