Devolver un Object de un metodo y agregarlo a un Jtable

La situación es la siguiente:

Estoy haciendo un pequeño ejercicio en donde se pueda ingresar datos de una persona a la BD desde un Jframe, consultar y actualizar datos del mismo, usando el MVC. A la hora de querer mostrar los resultados de una consulta en un Jtable no sucede nada, lo que hago es que tengo un método en la clase Conexion que se encarga de realizar la consulta y devolver una variable de tipo Object a la clase Controlador, en la cual yo desde esa clase quiero rellenar a mi Jtable con el Object recibido, el problema que detecte es que lo que retorna solamente me manda el ultimo registro y otro problema es que desde la Clase controlador no puedo insertar ese dato al Jtable que por cierto esta en otra clase.

Aquí dejo el código que estoy empleando.

Método Buscar de la clase Conexion

public Object[] Buscar(int opcion,String dato){
                Object[] resultado = new Object[6];
                       
                try{
                        st = con.createStatement();
                       
                        if(opcion == 1){
                               
                                System.out.println("ENTRO");
                                String nombre = "select nombre,paterno,materno,direccion,email,telefono from persona where nombre ='"+dato+"'";
                                rs = st.executeQuery(nombre);
                               
                               
                                while(rs.next()){
                                       
                                        for(int i=0; i<resultado.length; i++){
                                               
                                                resultado[i] = rs.getObject(i+1);
                                                System.out.println(resultado[i]);
                                        }
                                }
                                                       
                        }
                        else{
                                if(opcion == 2){
                                       
                                }
                                if(opcion == 3){
                                       
                                }
                                if(opcion == 4){
                                       
                                }
                        }
                       
                }
                catch(Exception e){
                        System.out.println("Exception buscar "+e.getMessage());
                }
                return resultado;
        }

Y aqui el codigo de la clase Controlador, especificamente la parte del actionPerformed

public void actionPerformed(ActionEvent e) {
               
                if(e.getActionCommand().equals("buscar")){
                        try{
                                Conexion c = new Conexion();
                               
                                int opcion = consultar.getOpcion().getSelectedIndex();
                                String dato = consultar.getDato().getText();
                                System.out.println(dato);
                               
                                System.out.println(c.Buscar(opcion, dato));
                               
                                Object resultado = c.Buscar(opcion, dato);
                               
                                /*Aqui es donde quiero rellenar el Jtable pero lo que recibo solamente es
                                 * el ultimo registro de mi consulta*/

                               
                               
                        }
                        catch(Exception b){
                                System.out.println("Tabla "+b.getMessage());
                        }
                }
        }

Agredeceria mucho su ayuda con este detalle en el que me encuentro

Saludos *alsvader*

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de rj@vasso

En mi opinion

Hola alsvader

La manera que estas queriendo extraer la informacion de tu result del query que ejecutas podria ser un poco redundante , tu tienes

 while(rs.next()){
  for(int i=0; i<resultado.length; i++){
etc etc ...}}

El tamaño de resultado es 6 , y lo tienes en un ciclo , es decir por cada next dentro de while estas iterando 6 veces los ciclos del for es redundante y es posible que este sea el error porque sobrescribe los valores del arreglo 6 cada vez que entra al next del while .

Trata de debugear y te daras cuenta de lo que te comento .....

Te recomiendo que en ves de un arreglo sea algun tipo de Objeto personalizado asi cuando quieras setearlo a la jtable seria mas sencillo es decir :

Ejemplo , vamos a suponer que el query te regresa estos dos datos

nombre , paterno , materno , direccion , email , telefono
Juan Perez Perez xxxxxxx xxxxx 516171829
Pancho Roble Roble xxxxxxx xxxxx 9821676126

Tendrias que hacer un objeto con cada uno de estos atributos

public class Usuario () {

private String nombre ;
private String paterno;
private String materno;
private String direccion;
private String email;
private Integer telefono;

/* getter and setter */
}
 

Posteriormente en tu iteracion con while seria de la siguiente manera

Usuario usuario = new Usuario ();
 List<usuario> listUsuario = new List<Usuario> ();
int a = 0;
while(rs.next()){
a++;
if(a == 0){
usuario.setNombre (rs.getObject(a).toString());  // nombre
}

if(a == 1){
usuario.setPaterno (rs.getObject(a).toString());  // paterno
}

if(a == 2){
usuario.setPaterno (rs.getObject(a).toString());  // materno
}

// etc etc asi hasta vaciar la informacion en una lista Personalizada

if(a == 6){
// Agregas ya el valor a la lista
listUsuario.add(usuario);
usuario = new Usuario();
// inicializas nuevamente la variable a para que empieze el conteo
a = 0;
}

}

Asi tendras una lista de usuarios y en tu value de tu Jtable seria mas facil acomodarla , reorna la List hasta la View para que puedas manipularla con un foreach...

Espero te haya dado un contexto mas claro .. Saludos