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

Como mostrar datos de consulta sql en un JTable?

Estas en el tema de Como mostrar datos de consulta sql en un JTable? en el foro de Java en Foros del Web. Hola,tengo un JcomboBox,un Jtable y un Jbutton,en el JcomboBOx muestro el resultado de la consultan sql que tiene nombres de personas y quiero que al ...
  #1 (permalink)  
Antiguo 23/01/2008, 21:43
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Como mostrar datos de consulta sql en un JTable?

Hola,tengo un JcomboBox,un Jtable y un Jbutton,en el JcomboBOx muestro el resultado de la consultan sql que tiene nombres de personas y quiero que al momento de hacer click en el JButton me muestre el rut y nombre de la persona en un JTable,mi consulta es:

¿como debo pasar los datos de la consulta sql que tengo en el metodo getComboBox al metodo getBotonConsultar() y mostrar el resultado al momento de hacer click en el boton de la consulta(getBotonConsultar() ) en un JTable que en mi caso seria el metodo getJTable()?

me podrian ayudar con ideas,o de hacerlo de otra forma o como conseguir el resultado con mi codigo

otra consulta,por que no aparece el nombre de las columnas?cual pdora ser el problema

gracias.
Código PHP:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;

public class 
Formu extends JFrame 
{
Connection conexion=null;
Statement sentencia=null;
String nombre_persona;
String rut_persona;
static 
String bdd="prueba";
static 
String usuario="root";
static 
String clave="";
static 
String driver="com.mysql.jdbc.Driver";
static 
String url="jdbc:mysql://localhost/"+bdd
String sql=null;
private 
JComboBox JCombobox_nombres=null;
private 
JTable  Jtable_resultados=null;
private 
JPanel panel1=null;
private 
JButton BotonConsultar=null;
private 
JLabel Label_NombreConsulta=null;
Container contenedor=getContentPane();

public 
Formu()
{
    
inicio();
}    

//Inicio de componentes
private void inicio()
{
this.setTitle("Consulta");    
this.setSize(390,360);    ;
getPanelConsulta();
}

//JPanelConsulta
private JPanel getPanelConsulta()
{
if(
panel1==null)
{
panel1 = new JPanel();
panel1.setLayout(null);    
panel1.add(getComboBox());
panel1.add(getJTable());
panel1.add(getBotonConsultar());
contenedor.add(panel1);
}
return 
panel1;    
}

private 
JComboBox getComboBox()
{
if(
JCombobox_nombres==null)
{
//inicio if JCombobox==null
JCombobox_nombres=new JComboBox();
JCombobox_nombres.setBounds1906010026);
try
{
//inicio try
Class.forName(driver).newInstance();
conexion DriverManager.getConnection(url,usuario,clave);
   if (
conexion != null)
      {
//inicio if conexion
  
sentencia conexion.createStatement();
 
String query "SELECT rut as Rut,nombre as Nombree FROM datos";
 
ResultSet resultado sentencia.executeQuery(query);
   
 while (
resultado.next()) {//inicio while
 
nombre_persona  resultado.getString("Nombree");
 
JCombobox_nombres.addItem(nombre_persona);
 }
//fin while
// rut_persona  = resultado.getString("Rut");
  
sentencia.close();
  
resultado.close();
  
conexion.close();
         }
//fin if conexion
       
}//fin try
     
       
catch(ClassNotFoundException ex)
       {
          
System.out.println(ex);
       }
       catch(
Exception ex)
       {
          
System.out.println(ex);
       }

}
//fin inicio if JCombobox==null
return JCombobox_nombres;    
}


//JTable
private JTable getJTable()
{
if(
Jtable_resultados==null)    
{
 
Object[][] datos=
{
{
"prueba","nombre"},

};
 
String[] columnas={"rut","nombre"};

Jtable_resultados=new JTable(datos,columnas);
Jtable_resultados.setBounds(150,120,150,50);
Jtable_resultados.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
}

return 
Jtable_resultados;
}


private 
JButton getBotonConsultar()
{
if(
BotonConsultar==null){
BotonConsultar=new JButton();
BotonConsultar.setText("Consultar");
BotonConsultar.setBounds13021010026);

      }    
return 
BotonConsultar;


main
Código PHP:
public class Inicio
{
public static 
void main(String[] args)
{
Formu f=new Formu();
f.setVisible(true);    
}    


Última edición por -thor-; 23/01/2008 a las 21:55
  #2 (permalink)  
Antiguo 26/01/2008, 18:24
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Re: Como mostrar datos de consulta sql en un JTable?

Alguna idea?:(
gracias
  #3 (permalink)  
Antiguo 26/01/2008, 23:24
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Re: Como mostrar datos de consulta sql en un JTable?

Hola:

Lo del JComboBox, JTable y JButton creo que no lo he entendido, lo siento.

Lo de la cabecera, debes meter el JTable dentro de un JScrollPane, ya que es este el que lo pinta. Aquí puedes ver como se hace lo de pintar las cabeceras del JTable.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 27/01/2008, 11:14
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Re: Como mostrar datos de consulta sql en un JTable?

Gracias chuidiang ahora logre mostrar las columnas con JScrollPane,Lo que quiero es que al seleccionar un nombre en el Jcombo y al hacer click en el boton me muestro los datos relacionados con aquel nombre en una tabla.

ejemplo:selecciono el nombre miguel en el Jcombo y al hacer click en el Bonton consultar en la tabla me deberia mostrar
rut nombre
11111 Miguel
estos datos los saco de una base de datos.
espero que se entienda y puedas ayudarme
gracias



En este JComboBox hago la consulta sql a mi base de datos mysql y saco los nombres de la tabla datos,en el while muestro los nombres en el JCombobox_nombres.addItem(nombre_persona);
y saco el rut rut_persona = resultado.getString("Rut");,este valor rut quiero enviarlo al metodo ConsultaDatos().
Código PHP:
//JComboBox
private JComboBox getComboBox()
{
if(
JCombobox_nombres==null)
{
//inicio if JCombobox==null
JCombobox_nombres=new JComboBox();
JCombobox_nombres.setBounds1906010026);
try
{
//inicio try
Class.forName(driver).newInstance();
conexion DriverManager.getConnection(url,usuario,clave);
   if (
conexion != null)
      {
//inicio if conexion
  
sentencia conexion.createStatement();
 
String query "SELECT rut as Rut,nombre as Nombree FROM datos";
 
ResultSet resultado sentencia.executeQuery(query);
   
 while (
resultado.next()) {//inicio while
 
nombre_persona  resultado.getString("Nombree");
 
rut_persona  resultado.getString("Rut");
 
JCombobox_nombres.addItem(nombre_persona);
 }
//fin while

  
sentencia.close();
  
resultado.close();
  
conexion.close();
         }
//fin if conexion
       
}//fin try
     
       
catch(ClassNotFoundException ex)
       {
          
System.out.println(ex);
       }
       catch(
Exception ex)
       {
          
System.out.println(ex);
       }

}
//fin inicio if JCombobox==null
return JCombobox_nombres;    


Metodo ConsultaDatos,en Este metodo realizo la consulta sql que me deberia mostrar el nombre y rut de la persona en el JTable.En esta consulta
Código:
"SELECT nombre,rut  FROM datos where rut='"+rut_persona+"'";
seleccione el nombre y rut de la persona,datos que seran visualizados en la tabla.y en where ocupo el valor de la variable rut_persona,valor que saco en la consulta sql que realize en el JComboBox,pero el valor de rut_persona no llega a este metodo y cuando ejecuto la aplicacion y hago click en mi boton consultar no muestra nada en la tabla.

Código PHP:
private void ConsultaDatos()
{
try
{
//inicio try
Class.forName(driver).newInstance();
conexion DriverManager.getConnection(url,usuario,clave);
   if (
conexion != null)
      {
//inicio if conexion
  
sentencia conexion.createStatement();
   
 
String query1 "SELECT nombre  FROM datos where rut='"+rut_persona+"'";
 
ResultSet resultado1 sentencia.executeQuery(query1);
 
while (
resultado1.next()) {//inicio while1

Object[]fila= new Object[2]; 
for (
int i=0;i<1;i++)
     
fila[i] = resultado1.getObject(i+1);
   
     
datos.addRow(fila); 
}
//fin while2
  
sentencia.close();
  
resultado1.close();
  
conexion.close();
         }
//fin if conexion
       
}//fin try
     
       
catch(ClassNotFoundException ex)
       {
          
System.out.println(ex);
       }
       catch(
Exception ex)
       {
          
System.out.println(ex);
       }

}
//fin ConsultaDatos 
JTable
Código PHP:

private JTable getJTable()
{
if(
Jtable_resultados==null)    
{
datos = new DefaultTableModel();
Jtable_resultados=new JTable(datos);
datos.addColumn ("rut");
datos.addColumn ("Nombre");
//datos.addRow(15427059);
Jtable_resultados.setBounds(150,120,150,50);
}
return 
Jtable_resultados;

Boton Consultar
Código PHP:
private JButton getBotonConsultar()
{
if(
BotonConsultar==null){
BotonConsultar=new JButton();
BotonConsultar.setText("Consultar");
BotonConsultar.setBounds13021010026);


BotonConsultar.addActionListener(new ActionListener() {
public 
void actionPerformed(ActionEvent e) {
ConsultaDatos();

 }
    }); 
}    
return 
BotonConsultar;

  #5 (permalink)  
Antiguo 27/01/2008, 14:51
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Re: Como mostrar datos de consulta sql en un JTable?

Hola:

Son trozos de código, no sé muy bien cómo encajan unos con otros.

El rut_persona lo pierdes porque en el bucle sólo guardas el último, vas machacando valores. Podrías guardarlos todos en una lista o bien ignorarlos totalmente. Luego puedes consultar con el nombre del JCombobox en vez de el rut.

En ConsultaDatos, estás declarando una fila con dos elementos, pero sólo rellenas uno de ellos -el bucle es de 0 a i<1-. El segundo elemento de la fila no lo rellenas.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 27/01/2008, 21:42
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Re: Como mostrar datos de consulta sql en un JTable?

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Son trozos de código, no sé muy bien cómo encajan unos con otros.

El rut_persona lo pierdes porque en el bucle sólo guardas el último, vas machacando valores. Podrías guardarlos todos en una lista o bien ignorarlos totalmente. Luego puedes consultar con el nombre del JCombobox en vez de el rut.

En ConsultaDatos, estás declarando una fila con dos elementos, pero sólo rellenas uno de ellos -el bucle es de 0 a i<1-. El segundo elemento de la fila no lo rellenas.

Se bueno.
Ahi arregle lo del bucle
Código PHP:
while (resultado1.next()) {

Object[]fila= new Object[2]; 
for (
int i=0;i<2;i++)
     
fila[i] = resultado1.getObject(i+1);
datos.addRow(fila);

Primero en el metodo getComboBox realizo la consulta a la tabla y muestro los nombres en el comboBox,en el metodo Consultadatos realizo la segunda consulta sql para mostrar el resultado en el JTable,esa consulta quiero realizarla recibiendo el rut desde el metodo getComboBox,finalmente en el metodo getBotonConsultar llamo al metodo Consultadatos para visualizar los datos en el JTable.
Se me olvidaba en el metodo getJTable() solo creo la tabla con
datos = new DefaultTableModel();
Jtable_resultados=new JTable(datos);
y luego datos lo ocupo para agregar las columnas y en el metodo ConsultaDatos la fila.
esa seria la relacion de los segmentos de codigo.

Como podria guardarlos todos en una lista?, para despues recuperar el rut en la funcion ConsultaDatos y mostrar la informacion realizada con ese rut,que logicamente el nombre que selecciono va relacionado con un rut.La consulta no la hago por nombre porque si hay 2 nombres iguales habra mas de un resultado y mi idea es solo mostrar el nombre que se selecciono en el combobox y se relaciona con el rut.
El rut es la clave primaria

Este programa lo estoy haciendo porque estoy estudiando el lenguaje java y quiero aprender a utilizarlo con consultas sql.Llevo pocos dias leyendo manuales y desarrollando pequeños programas y este quize hacerlo con conexion a base de datos.

Gracias por darte el tiempo de ayudarme
  #7 (permalink)  
Antiguo 28/01/2008, 00:36
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Re: Como mostrar datos de consulta sql en un JTable?

Hola:

Si puede haber varios nombres con el mismo rut, tendrás un problema, puesto que en el jcombobox aparecerá el nombre repetido varias veces y el usuario no sabrá cual es el del rut correspondiente.

Para guardar las parejas, haz una clase Persona -o el nombre que quieras- con los dos datos rut y nombre. Cuando hagas las consultas, vete creando new Persona() y rellenando ambos datos. Luego vete metiéndolos, por ejemplo, en un LinkdedList, así los tendrás todos.

Código:
LinkedList lista = new LinkedList();
rs = st.executeQuery(...);
while (rs.next()
{
Persona p= new Persona();
p.setRut (...);
p.setNombre (...);
lista.add (p);
}
Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #8 (permalink)  
Antiguo 28/01/2008, 18:03
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Re: Como mostrar datos de consulta sql en un JTable?

El rut es la clave primaria y no puede repetirse,el nombre podria repetirse,para diferenciarlos creare el campo apellido en mi tabla y en el combobox mostrare el nombre y apellido.

Al crear una nueva clase como podria enviarle los valores que obtengo en la consulta que realizo en el metodo getJcomboBox y luego esos valores recuperarlos en el metodo ConsultaDatos y visualizar el resultado en el JTable?
no entendi eso de la lista

es algo complicado java,pero no me rendire xd
  #9 (permalink)  
Antiguo 28/01/2008, 20:02
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Re: Como mostrar datos de consulta sql en un JTable?

Ahora lo intente de esta forma y para sacar el rut del combo utilize String cod_rut=resu_nombre.absolute(JCombobox_nombres.get SelectedIndex()+1); ,pero me entrega el siguiente error
Código:
incompatible types
found   : boolean
required: java.lang.String
 cod_rut=resu_nombre.absolute(JCombobox_nombres.getSelectedIndex()+1); 
                             ^
1 error
Em mi tabla ahora deje el campo rut como INT y nombre sigue siendo CHAR.
Intente cambiando la variable cod_rut por int,pero da el mismo error,de esta forma intento sacar el rut y guardarlo en la variable cod_rut para luego realizar mi otra consulta en el metodo ConsultaDatos.
Por que sale ese error?
gracias
no entendi eso de la lista.

esto es lo que pretendo hacer:en el combo mostrar los nombres, pero deseo guardar el rut el cual voy a utilizarlo para realizar otra consulta sql y mostrar los datos que se relacionen con el rut y el nombre seleccionado en el combo.

Código PHP:
private JComboBox getComboBox()
{
if(
JCombobox_nombres==null)
{
//inicio if JCombobox==null
JCombobox_nombres=new JComboBox();
JCombobox_nombres.setBounds1906010026);
try
{
//inicio try
Class.forName(driver).newInstance();
conexion DriverManager.getConnection(url,usuario,clave);
   if (
conexion != null)
      {
//inicio if conexion
  
sentencia conexion.createStatement();
    
ResultSet resu_nombre=null;
    
resu_nombre sentencia.executeQuery("Select * From datos"); 
   
while (
resu_nombre.next()) {//inicio while
JCombobox_nombres.addItem(resu_nombre.getInt("rut")+resu_nombre.getString("nombre")); 
}
 
String cod_rut=resu_nombre.absolute(JCombobox_nombres.getSelectedIndex()+1); 


  
sentencia.close();
  
resultado.close();
  
conexion.close();
         }
//fin if conexion
       
}//fin try
     
       
catch(ClassNotFoundException ex)
       {
          
System.out.println(ex);
       }
       catch(
Exception ex)
       {
          
System.out.println(ex);
       }

}
//fin inicio if JCombobox==null
return JCombobox_nombres;    

  #10 (permalink)  
Antiguo 30/01/2008, 10:31
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 3 meses
Puntos: 6
Re: Como mostrar datos de consulta sql en un JTable?

bueno amigo supongo q muy claro no me queda la manera q yo utilizo para cargar un JTable es de esta, capaz te sirve

public void cargarTabla(){
DefaultTableModel mdlTabla= new DefaultTableModel ();
Object columnValues[]= new Object[2];
Object columnNames[]=new Object[2];

columnNames[0]="Código Tipo Producto";
columnNames[1]="Nombre Tipo Producto";
mdlTabla.setColumnIdentifiers(columnNames);
tablaTipoProducto.setSelectionMode(ListSelectionMo del.SINGLE_SELECTION);
tablaTipoProducto.setModel(mdlTabla);
//esta lista se lee de la base de datos y lo q hace es leer todos los tipos de productos desde una sql
ArrayList lista=Fachada.getInstancia().leerTodosTiposProduct os();
for(int i=0;i<lista.size();i++){
TipoProducto tipo=(TipoProducto)lista.get(i);
columnValues[0]=tipo.getId();
columnValues[1]=tipo.getNombre();
mdlTabla.addRow(columnValues);
}
}

espero q te sirva de algo
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




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