Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Obtener ultimo registro de tabla mysql

Estas en el tema de Obtener ultimo registro de tabla mysql en el foro de Java en Foros del Web. Tras mucho intentos, no consigo obtener el ultimo id de la columna autoincrementable. He probado con esto que es la que mas me convence: MySQL ...
  #1 (permalink)  
Antiguo 29/03/2015, 13:25
 
Fecha de Ingreso: marzo-2015
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 0
Obtener ultimo registro de tabla mysql

Tras mucho intentos, no consigo obtener el ultimo id de la columna autoincrementable. He probado con esto que es la que mas me convence:

MySQL condb = new MySQL();
Connection reg = condb.tpvconexion();
Statement stm= reg.createStatement();
ResultSet rst = stm.executeQuery("SELECT MAX(idPedido) AS idPedido FROM pedido)");
Int ticket = (rst.getInt(1)+1);
System.out.println(ticket);
info.txtTicket.setText(ticket);

La linea de ejecución se para en la declaracion de la variable ticket. SOS. Que es lo que estoy haciendo mal
  #2 (permalink)  
Antiguo 29/03/2015, 14:57
 
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Obtener ultimo registro de tabla mysql

Hola, buen día.

¿Por qué no intentas lo siguiente en tu consulta?

Código:
SELECT id_tabla,MAX(idPedido) AS idPedido FROM pedido ORDER BY id_tabla DESC
En teoría eso te lo ordena de manera descendente por lo cual deberías ver como primer registro el último id de tu tabla. Posteriormente únicamente sería cuestión de hacer referencia al primer registro del ResultSet, intenta con esto...

Código:
System.out.println(rst.get(0));
Cualquier duda y/o comentario, aquí estamos. Suerte!
  #3 (permalink)  
Antiguo 30/03/2015, 04:57
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Obtener ultimo registro de tabla mysql

Buenas,

Te falta hacer un next en el resultset para poner el cursor en el primer resulado.

Código Java:
Ver original
  1. ResultSet rst = stm.executeQuery("SELECT MAX(idPedido) AS idPedido FROM pedido)");
  2. if (rst.next()) {
  3.     int ticket = (rst.getInt(1)+1);
  4.     System.out.println(ticket);
  5.     info.txtTicket.setText(ticket);
  6. }

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #4 (permalink)  
Antiguo 30/03/2015, 11:39
 
Fecha de Ingreso: marzo-2015
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Obtener ultimo registro de tabla mysql

Gracias pos las respuestas. Acabo de probar una de las opciones (la segunda) y no me funciona. Le he hecho unos añadidos para poder ver hasta donde llega y al if no llega.

try{
MySQL condb = new MySQL();
Connection reg = condb.tpvconexion();
Statement stm= reg.createStatement();
System.out.println("hasta aqui llego 1");
ResultSet rst = stm.executeQuery("SELECT MAX(idPedido) AS idPedido FROM pedido)");
System.out.println("hasta aqui llego 2");
if (rst.next()) {
System.out.println("hasta aqui llego 3");
int ticket = (rst.getInt("idPedido")+1);
System.out.println(ticket);
info.txtTicket.setText(Integer.toString(ticket));
}
}catch(Exception e){

}

Mi pregunta es... idPedido es una columna de la tabla pedido, el que está entre parentesis también se refiere a la columna?

en (rst.getInt("idPedido")+1) tambien se refiere a la columna? He probado con rst.getInt(1) pero tampoco rula.

Como veis hay distintos System.out.println para saber hasta donde llego y al 2 no llega.

Voy a probar con el metodo de ordenar a ver si asi va.
  #5 (permalink)  
Antiguo 30/03/2015, 15:08
 
Fecha de Ingreso: marzo-2015
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Obtener ultimo registro de tabla mysql

Intentando cargar un jtable, estoy teniendo también problemas. No sera que no puedo cargar los datos porque el boton desde donde hago la llamada está en un panel diferente?
El funcionamiento del proyecto, en pocas palabras es que al darle a un boton, en un panel del frame principal, se cargue un panel que contiene la tabla. Puedo cargar una tabla desde un boton ubicado en el mismo panel pero no desde otro. Con lo del ultimo registro de la tabla mysql puede suceder lo mismo, consigo (creo) el ultimo dato, pero al estar el jtextfield en otro panel, no lo puedo plasmar.

Ya veis que me estoy haciendo la picha un lio. Creo que no es necesario decir que soy novato en Java.
  #6 (permalink)  
Antiguo 30/03/2015, 15:34
 
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Obtener ultimo registro de tabla mysql

Los programadores se forman a través de la práctica y error, al final todos pasamos por eso.

Aquí te pongo un ejemplo, espero que te sirva ya que yo lo ejecute localmente y no tuve problema alguno, obtuve el ultimo registro correctamente

Código Java:
Ver original
  1. String ultimoValor = null;
  2. try {
  3.     PreparedStatement stmtr = conn.prepareStatement("SELECT * FROM Rutas ORDER BY codigo_ruta DESC");
  4.     ResultSet rsr = stmtr.executeQuery();
  5.     if(rsr.next()){
  6.         ultimoValor = rsr.getString("codigo_ruta");
  7.     }
  8.     System.out.println(ultimoValor);
  9.     stmtr.close();
  10.     rsr.close();
  11.     conn.close();
  12. } catch (Exception e) {
  13.         e.printStackTrace();
  14. }

Cualquier duda y/o inconveniente, aquí estamos.
  #7 (permalink)  
Antiguo 30/03/2015, 16:30
 
Fecha de Ingreso: marzo-2015
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Obtener ultimo registro de tabla mysql

Cita:
Iniciado por Lawliet18 Ver Mensaje
Los programadores se forman a través de la práctica y error, al final todos pasamos por eso.

Aquí te pongo un ejemplo, espero que te sirva ya que yo lo ejecute localmente y no tuve problema alguno, obtuve el ultimo registro correctamente

Código Java:
Ver original
  1. String ultimoValor = null;
  2. try {
  3.     PreparedStatement stmtr = conn.prepareStatement("SELECT * FROM Rutas ORDER BY codigo_ruta DESC");
  4.     ResultSet rsr = stmtr.executeQuery();
  5.     if(rsr.next()){
  6.         ultimoValor = rsr.getString("codigo_ruta");
  7.     }
  8.     System.out.println(ultimoValor);
  9.     stmtr.close();
  10.     rsr.close();
  11.     conn.close();
  12. } catch (Exception e) {
  13.         e.printStackTrace();
  14. }

Cualquier duda y/o inconveniente, aquí estamos.
Funciono perfecto. Estaba empeñado que lo tenia que hacer con el MAX, pero asi funciona y me vale. Cambié sólo estas dos lineas

Statement stm= reg.createStatement();
ResultSet rsr= stm.executeQuery("SELECT * FROM pedido ORDER BY idPedido DESC");

porque el PrepareStatement me daba error( No me preguntes por que, me instaba a que creara un metodo prepareStatement()).
Gracias
  #8 (permalink)  
Antiguo 30/03/2015, 16:50
 
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Obtener ultimo registro de tabla mysql

Que extraño, lo mas seguro que en vez de colocar PreparedStatement lo colocaste sin la d al final; es decir, PrepareStatement, ya que yo hago mis consultas con esa Interface y me viene perfecto, aunque también verifica que la hayas importado correctamente.

Código Java:
Ver original
  1. import java.sql.PreparedStatement;

Sin embargo, Statement es valido, aunque PreparedStatement hereda de Statement por lo que "podemos" decir que viene siendo lo mismo pero no, me atrevería a decir que PreparedStatement es mas poderoso en todos los sentidos que un Statement, además de ser sumamente útil cuando deseamos hacer consultas parametrizadas.

Pero en fin, con calma luego podrás empaparte de las diferencias entre uno y otro.

Cualquier cosa, aquí andamos. Suerte!

Etiquetas: netbeans
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:38.