Ir al contenido principal

Mostrar resultado de consulta SQL en JTable Java




Hola a todos, como lo comente en la entrada de mostrar resultado SQL en un JcomboBox, en esta oportunidad vamos a ver como mostrar el resultado de nuestra consulta sql en el componente JTable de java.

Bueno primero que todo para el ejemplo debemos sabler que hay que tener instalado y configurado MySQL en el momento yo lo tengo configurado con el  usuario: root   y clave: root08, tu lo configuras segun tu configuracion de MySQL para no tener inconvenientes con la prueba, la base de datos que tenemos que crear se llama conexmysql y luego descargamos la base de datos conexmysql ya con registro llenos para poder apreciar los datos en el JTable y ejecutamos un sql con el contenido del archivo y listo tenemos la base llena y lista para la consulta.

Depues descargamos el proyecto completo que se llama JTable que ya tiene el driver mysql asociado.

Aqui muestro el contenido del boton buscar de la ventana SQL donde se encuenta la conexion con mysql :

   

Y declaramos las variables en la parte publica del documento asi:

    //tabla modelo:
    public static DefaultTableModel modelo = new DefaultTableModel();
    //filas
    Object[] filas;

Deja tu comentario o agradecimiento...

Comentarios

  1. Que tal Amigo... Muchas Gracias por Tu Publicación... Me ayudo mucho...Pero tengo un problema y es que solo me muestra el ultimo registro que tengo en mi base de datos...No se si me pudieras Ayudar...
    GRAcias!!

    ResponderEliminar
  2. Hola moises si quieres puesdes publicar todo o parte de tu codigo para tener una mejor idea de lo que esta ocurriendo, si embargo lo que puede estar ocurriendo es esto que el ciclo for no esta contando correctamente las columnas, verifica este codigo

    for (int i=0;i<modelo.getColumnCount();i++){
    filas[i] = rs.getObject(i+1);
    }
    //escribo las filas del resultado SQL//
    modelo.addRow(filas);
    jtResultado.setModel(modelo);

    ResponderEliminar
  3. me da error en jtResultado.setModel(modelo);

    dice que jtResultado no existe.
    espero me orientes

    ResponderEliminar
  4. Hola jorge, Lo que ocurre es que yo le cambié el nombre a la variable del componente JTable y le coloque jtResultado esto lo puedes hacer cono click derecho sobre el componente y escoges la opción "Change variable name" y listo.. No olvides descargar la base de datos "conexmysql " y subirla a MySQL. Espero te ayude me comentas...

    ResponderEliminar
  5. Muchas Gracias, hace tiempo necesitaba una orientación, lo que yo estoy haciendo es con un conector para oracle 10g.

    Saludos
    Ariel

    ResponderEliminar
  6. excelente ayuda muy bien gracias

    ResponderEliminar
  7. amigo de da error al leer la base de datos q crees q pueda ser. gracias

    ResponderEliminar
  8. Hola victor, partamos del hecho que no haz hecho modificaciones al código del ejemplo todavia, tendríamos que mirar que la base de datos este creada corectamente con el nombre biller, tambien que el sql de MySQl la halla cargado bien, por último verifica que tengas incluido en las librerias del proyecto el conector de MySQL.

    Espero te ayude me comentas...

    ResponderEliminar
  9. Gracias estuve buscando hace un monton un buen tutorial de consultas en jtable! lo pruebo y cuento como me fue!

    gracias otra vez!

    ResponderEliminar
  10. hola esta muy bueno tu codigo pero me marca un error en esta declaracion

    super(parent, modal);
    porke? graxias

    ResponderEliminar
    Respuestas
    1. Hola julio cesar, esto es un error de la clase de JDialogForm (cambio de nombre, propiedades, o escibiste código dentro de los métodos reservados de éste) o en su defecto si memtiste mano al codigo puede ser un error de sintaxis en ese método. revisa estas dos cosas o descargate el proyecto nuevamente.

      Saludos,

      Eliminar
  11. Hola quería saber cómo paginar un jtable porque tengo un listado:

    private void cargarTablaPersona()
    {
    modelo=(DefaultTableModel)tablaPersona.getModel();
    modelo.setRowCount(0);
    objutilitario.cargarColumnasTablaPersona(this.tablaPersona,anchos);
    for(Persona objp : ControladorPersona.getInstance().devolverDatos().values())
    {
    Object[] row={objp.getNumero(),objp.getCI(),objp.getNombre(),objp.getApellido(),objp.getDirNombre()+""+ objp.getDirNumero(),objp.convertirGCaString()};
    modelo.addRow(row);
    }
    tablaPersona.setModel(modelo);
    tablaPersona.setDefaultRenderer(Object.class,new Renderizador());
    }

    y tengo una clase Paginación:

    package singletonbd.dominio.clases;
    public class Paginacion
    {
    private int paginaActual;
    private int registrosTotales;
    private int registrosPorPagina;
    public Paginacion()
    {
    }
    public Paginacion(int paginaActual, int registrosTotales, int registrosPorPagina)
    {
    this.paginaActual = paginaActual;
    this.registrosTotales = registrosTotales;
    this.registrosPorPagina = registrosPorPagina;
    }
    public Paginacion(String paginaActual, int registrosTotales, int registrosPorPagina)
    {
    this.paginaActual = cogePaginaDeString(paginaActual);
    this.registrosTotales = registrosTotales;
    this.registrosPorPagina = registrosPorPagina;
    }
    public int getPaginaActual()
    {
    return paginaActual;
    }

    public void setPaginaActual(int paginaActual)
    {
    this.paginaActual = paginaActual;
    }

    public int getRegistrosPorPagina()
    {
    return registrosPorPagina;
    }
    public void setRegistrosPorPagina(int registrosPorPagina)
    {
    this.registrosPorPagina = registrosPorPagina;
    }

    public int getRegistrosTotales()
    {
    return registrosTotales;
    }
    public void setRegistrosTotales(int registrosTotales)
    {
    this.registrosTotales = registrosTotales;
    }
    public int getTotalPaginas()
    {
    return (int) (Math.ceil((registrosTotales-1) / registrosPorPagina)+1);
    }
    public boolean getExisteSiguiente()
    {
    if (paginaActual >= this.getTotalPaginas())
    {
    return false;
    }
    return true;
    }
    public boolean getExisteAnterior()
    {
    if (paginaActual <= 1)
    {
    return false;
    }
    return true;
    }
    public int getPaginaSiguiente()
    {
    return getExisteSiguiente() ? paginaActual + 1 : paginaActual;
    }
    public int getPaginaAnterior()
    {
    return getExisteAnterior() ? paginaActual - 1 : paginaActual;
    }
    public int offset()
    {
    return (int) ((paginaActual - 1) * registrosPorPagina);
    }
    public int limit()
    {
    return registrosPorPagina;
    }
    public static int cogePaginaDeString(String pag) {
    int pagina = 1;
    if (pag != null)
    {
    try {
    pagina = Integer.parseInt(pag);
    if (pagina < 1)
    {
    pagina = 1;
    }
    } catch (NumberFormatException ex)
    {
    pagina = 1;
    }
    }
    return pagina;
    }
    }

    pero no sé cómo paginar el listado porque quiero que un botón al hacer click me muestre las primeras 10 filas, en otro botón las 10 filas anteriores, en otro las siguientes 10 filas y en otro las últimas 10 filas.

    Por favor sí podés ayudarme te lo agradezco.

    ResponderEliminar
    Respuestas
    1. Hola Juandy, Prueba con lo siguiente utilizando LIMIT de SQL:

      x -> representa el origen desde donde se muestran los registros
      y -> representa cuantos registrso se muestran

      Entonces quedaria:

      LIMIT 0,5 (siginifica que saca los resultados del 0 al 4, empezando desd el 0)
      LIMIT 10,5 (significa que saca los resultados del 10 al 14, empezando desde el 10)

      Al ser todo consultas sencillas (SELECT) al final les añadia LIMIT, asi que he ido guardando la ultima consulta realizada en un String y con el replaceAll() le he ido reemplazando esa parte de texto por uno nuevo con una variable que le incrementaba o quitaba mas menos 5 (ya que los he ido sacando de 5 en 5). Asi de sencillo.

      Espero que te ayude...

      Eliminar
  12. No entiendo como pides agradecimientos.
    Si ni siquiera esta completo el for...
    Así vamos.

    ResponderEliminar
    Respuestas
    1. Primero que todo, no me parece que informes un error en el post de esta forma, por otro lado Se nota que nunca has utilizado un blog y no sabes que en ocasiones omite partes de código al momento de pegarlo en la entrada, arriba existe un botón DESCARGAR para que tengas mi programa con el código para que no tengas que pensar mucho...

      Eliminar
    2. oye mi estimado no te habras equivocado al subir la bd,
      bueno el el scrip que subes falta la tabla bitacora..

      Eliminar
    3. Hola pedro tienes razón no se pasó al copiar el script que es incorrecto, te informo que ya está restaurado el link con el archivo .SQL comprimido en .ZIP.

      Eliminar
  13. -- phpMyAdmin SQL Dump
    -- version 2.10.2
    -- http://www.phpmyadmin.net
    --
    -- Servidor: localhost
    -- Tiempo de generación: 29-03-2013 a las 22:29:58
    -- Versión del servidor: 5.0.45
    -- Versión de PHP: 5.2.3

    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

    --
    -- Base de datos: `conexmysql`
    --

    -- --------------------------------------------------------

    --
    -- Estructura de tabla para la tabla `bitacora`
    --

    CREATE TABLE `bitacora` (
    `codbitacora` int(20) NOT NULL auto_increment COMMENT 'id',
    `usuario` varchar(50) NOT NULL default 'nulo',
    `fecha` varchar(30) NOT NULL default 'nulo',
    `hora` varchar(30) NOT NULL default 'nulo',
    `accion` varchar(100) NOT NULL default 'nulo',
    `ip` varchar(30) NOT NULL default '0.0.0.0',
    `pc` varchar(50) NOT NULL default 'nulo',
    `borrado` varchar(2) NOT NULL default '0',
    PRIMARY KEY (`codbitacora`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=126 ;

    --
    -- Volcar la base de datos para la tabla `bitacora`
    --

    INSERT INTO `bitacora` VALUES (1, 'Administrador', '2010-12-13', '13:47:27', 'inicio sesion', '127.0.0.1', 'activate.adobe.com', '0');
    INSERT INTO `bitacora` VALUES (2, 'demostracion', '2010-12-13', '13:53:01', 'inicio sesion', '127.0.0.1', 'activate.adobe.com', '0');
    INSERT INTO `bitacora` VALUES (3, 'Administrador', '2010-12-14', '19:32:06', 'inicio sesion', '127.0.0.1', 'activate.adobe.com', '0');

    ResponderEliminar
  14. Jeison Nisperuza
    ahora si mi estimado si esta funcionando el programita.. voy a analizar bien tu codigo para reutilizar

    ResponderEliminar
  15. Deimos Phobus
    Buen aporte, muchas gracias!!!

    ResponderEliminar
  16. Gracias por tu aporte

    Te deseo muchos Exitos

    ResponderEliminar
  17. Gracias por tu aporte

    Te deseo muchos Exitos

    ResponderEliminar
  18. buen aporte caballero dado que me ayudo a dar respuesta a mis dudas con el manejo de JTABLE

    saludos

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Fireworks CS3 portable

Para que hagas los logos, botones e imagenes para tus aplicaciones facil y rapido... ¿Qué es Fireworks? Adobe Fireworks es una aplicación en forma de estudio (basada en la forma de estudio de Adobe Flash ), pero con más parecido a un taller destinado para el manejo híbrido de gráficos vectoriales con Gráficos en mapa de bits y que ofrece un ambiente eficiente tanto para la creación rápida de prototipos de sitios Web e interfaces de usuario, como para la creación y Optimización de Imágenes para web. Originalmente fue desarrollado por Macromedia , compañía que fue comprada en 2005 por Adobe Systems . Fireworks está disponible de forma individual o integrado en Adobe CS3/CS4/CS5 y por tanto ha sido diseñado para integrarse con otros productos de Adobe, como Dreamweaver y Flash . Integración con Adobe Flash La integración con Adobe Flash se ha ido reduciendo paulatinamente desde que Flash, en su versión 7, integró la herramienta PolyStar que hace un polígono

Pasar de una ventana a otra en java

Hola a todos en esta oportunidad estamos postiando algo que cuando empezamos con java es muy necesario y es como pasar de una ventana a otra, ya sea JDialog o JFrame; creados en tiempo de ejecucion o en aplicaciones de escritorio: Para llamar a un JDialog:        JDialog1 dialogo = new JDialog1 ( this , true );        dialogo . show (); y para cerrar un JDialogo de una plicacion de escritorio se puede utilizar:        dispose (); Para llamar a un JFrame:        JFrame1 frame = new JFrame1 ();        frame . show (); Para cerrar un JFrame de una plicacion de escritorio:                 dispose ();   o tambien: System. exit (0); y si se contruye a partir de la clase JFrame se coloca el siguiente codigo en la parte publica del documento:       setDefaultCloseOperation ( EXIT_ON_CLOSE ); Espero los siguientes ejemplos les sean de mucha ayuda... Deja tu comentario o agradecimiento.

Limitar texto con CSS

HTML: <span class= "text" > Hello world this is a long sentence </span> CSS: .text {   display : block ;   width : 100px ;   overflow : hidden ;   white-space : nowrap ;   text - overflow : ellipsis; }  RESULTADO: Hello world t...