Tabela

12 respostas
D

Pessoal, Alguem tem um modelo de tabela simples, soh para mostrar os dados…to fazendo um projetinho mais ou menos assim…
formConsulta
gerente_bd
Contato
Quando clicar no botaum todos ele deve mostrar uma table com todos os registros…
o sql puxando os registros estah no gerete_bd…
como faco isso???

12 Respostas

J

Oi

Diana, é um exemplo bem simples, para que funcione é só tu trocar a QUERY que está nele para a que tu quer usar...

A, e ele está conectando em um DB Access, se tu tiver usando outro DB é só configurar...

//Exibe em forma de tabela/listagem a tabela GG_STUDENT.

package packs;

import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class TableDisplay extends JFrame {
	private Connection connection;
	private JTable table;
	
	public TableDisplay() {
		super("Listagem geral dos Pacientes");

		String url = "jdbc:odbc:banco.mdb"; 
		String username = "paulo";
		String password = "cesar";
		
		try {
		   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		   connection = DriverManager.getConnection(url, username, password);
		}
		catch (ClassNotFoundException cnfex) {
			System.err.println(
				"Falhou a conexao com o banco");
			cnfex.printStackTrace();
		    System.exit(1);
		}
		catch (SQLException sqlex) {
	    	System.err.println("Conexao desabilitada");	 
		    sqlex.printStackTrace();
		}
		
		getTable();
		setSize(800,370);
		setLocation(5,20);
		show();
	}
	
	private void getTable()
	{
		Statement statement;
		ResultSet resultset;
		
		try {
			String query = "Select * from Tab_Pacientes order by nome";
			statement = connection.createStatement();
			resultset = statement.executeQuery(query);
			displayResultSet(resultset);
			statement.close();
	    }
		catch ( SQLException sqlex ) {
			sqlex.printStackTrace();
		}
	}
	
	private void displayResultSet(ResultSet rs )
	   throws SQLException
	{
		boolean moreRecords = rs.next();
		
		if (! moreRecords) {
			JOptionPane.showMessageDialog(this, "Nao existem registros na tabela!!");
			setTitle("Registros Vazios");
			return;
		}
		
//		setTitle("Listagem Geral dos dados - Tabela Student - bancoDB");
		
		Vector columnHeads = new Vector();
		Vector rows = new Vector();
		
		try {
			ResultSetMetaData rsmd = rs.getMetaData();
			for (int i = 1; i <= rsmd.getColumnCount(); ++i)
			   columnHeads.addElement(rsmd.getColumnName(i));
			   
			do {
				rows.addElement(getNextRow(rs, rsmd));
			} while (rs.next());
			
			table = new JTable(rows, columnHeads);
			JScrollPane scroller = new JScrollPane(table);
			getContentPane().add(scroller,BorderLayout.CENTER);
			validate();
		}
		catch (SQLException sqlex) {
			sqlex.printStackTrace();
		}
	}
	
	private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd)	
	     throws SQLException
	{
		Vector currentRow = new Vector();
		for (int i = 1; i <= rsmd.getColumnCount(); ++i)
		   switch(rsmd.getColumnType(i)) {
		   	case Types.VARCHAR: currentRow.addElement(rs.getString(i));
		   	  break;
		   	case Types.INTEGER:currentRow.addElement(new Long(rs.getLong(i)));
		   	  break;
		   	  /*case Types.LONGCHAR:currentRow.addElement(rs.getString(i));
		   	    break;*/
		   	default: System.out.println("Tipo dos Dados: " + rsmd.getColumnTypeName(i));
	    }
	  return currentRow;
	}
	
	public void shutDown()
	{
		try {
			connection.close();
		}
		catch (SQLException sqlex) {
			System.err.println("N� foi poss�el desconectar.");
			sqlex.printStackTrace();
		}
	}
	
	public static void montaTable()
	{
//		try {   //Faz o aplicativo ter apar�cias.
//		     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		    //UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
//		} catch (Exception exc) {
//		    System.err.println("Error loading L&F: " + exc);
//		}
		final TableDisplay app = new TableDisplay();
	    app.addWindowListener(new WindowAdapter() {
	    	public void windowClosing(WindowEvent e)
	    	{
	    		//app.shutDown();
	    		//System.exit(0);
	    	}
	    }
	  );
//	}
    public static void main(String args[]) {
        montaTable();
     }	
}

Se precisar, é só falar... :sentido:

T+ :joia:

D

Que mudancas sao necessarias para que essa table que atualmente esta abrindo em um form, para que ela abra somente no panel de outro form…mas ou menos assim: quando clicar no botao mostrar tudo ela abrira a tabela…

//Exibe em forma de tabela/listagem a tabela GG_STUDENT. 

package packs; 

import java.sql.*; 
import java.awt.*; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 

public class TableDisplay extends JFrame { 
   private Connection connection; 
   private JTable table; 
    
   public TableDisplay() { 
      super("Listagem geral dos Pacientes"); 

      String url = "jdbc:odbc:banco.mdb"; 
      String username = "paulo"; 
      String password = "cesar"; 
       
      try { 
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
         connection = DriverManager.getConnection(url, username, password); 
      } 
      catch (ClassNotFoundException cnfex) { 
         System.err.println( 
            "Falhou a conexao com o banco"); 
         cnfex.printStackTrace(); 
          System.exit(1); 
      } 
      catch (SQLException sqlex) { 
          System.err.println("Conexao desabilitada");    
          sqlex.printStackTrace(); 
      } 
       
      getTable(); 
      setSize(800,370); 
      setLocation(5,20); 
      show(); 
   } 
    
   private void getTable() 
   { 
      Statement statement; 
      ResultSet resultset; 
       
      try { 
         String query = "Select * from Tab_Pacientes order by nome"; 
         statement = connection.createStatement(); 
         resultset = statement.executeQuery(query); 
         displayResultSet(resultset); 
         statement.close(); 
       } 
      catch ( SQLException sqlex ) { 
         sqlex.printStackTrace(); 
      } 
   } 
    
   private void displayResultSet(ResultSet rs ) 
      throws SQLException 
   { 
      boolean moreRecords = rs.next(); 
       
      if (! moreRecords) { 
         JOptionPane.showMessageDialog(this, "Nao existem registros na tabela!!"); 
         setTitle("Registros Vazios"); 
         return; 
      } 
       
//      setTitle("Listagem Geral dos dados - Tabela Student - bancoDB"); 
       
      Vector columnHeads = new Vector(); 
      Vector rows = new Vector(); 
       
      try { 
         ResultSetMetaData rsmd = rs.getMetaData(); 
         for (int i = 1; i <= rsmd.getColumnCount(); ++i) 
            columnHeads.addElement(rsmd.getColumnName(i)); 
             
         do { 
            rows.addElement(getNextRow(rs, rsmd)); 
         } while (rs.next()); 
          
         table = new JTable(rows, columnHeads); 
         JScrollPane scroller = new JScrollPane(table); 
         getContentPane().add(scroller,BorderLayout.CENTER); 
         validate(); 
      } 
      catch (SQLException sqlex) { 
         sqlex.printStackTrace(); 
      } 
   } 
    
   private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd)    
        throws SQLException 
   { 
      Vector currentRow = new Vector(); 
      for (int i = 1; i <= rsmd.getColumnCount(); ++i) 
         switch(rsmd.getColumnType(i)) { 
            case Types.VARCHAR: currentRow.addElement(rs.getString(i)); 
              break; 
            case Types.INTEGER:currentRow.addElement(new Long(rs.getLong(i))); 
              break; 
              /*case Types.LONGCHAR:currentRow.addElement(rs.getString(i)); 
                break;*/ 
            default: System.out.println("Tipo dos Dados: " + rsmd.getColumnTypeName(i)); 
       } 
     return currentRow; 
   } 
    
   public void shutDown() 
   { 
      try { 
         connection.close(); 
      } 
      catch (SQLException sqlex) { 
         System.err.println("N� foi poss�el desconectar."); 
         sqlex.printStackTrace(); 
      } 
   } 
    
   public static void montaTable() 
   { 
//      try {   //Faz o aplicativo ter apar�cias. 
//           UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
          //UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 
//      } catch (Exception exc) { 
//          System.err.println("Error loading L&F: " + exc); 
//      } 
      final TableDisplay app = new TableDisplay(); 
       app.addWindowListener(new WindowAdapter() { 
          public void windowClosing(WindowEvent e) 
          { 
             //app.shutDown(); 
             //System.exit(0); 
          } 
       } 
     ); 
//   } 
    public static void main(String args[]) { 
        montaTable(); 
     }    
}

[color=“red”]Editado para conter o BBCode CODE - jeveaux[/color]

J

Oi

DIana, não precisa mudar muita coisa não, só tu fazer assim:

//Exibe em forma de tabela/listagem a tabela GG_STUDENT.

import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class TableDisplay extends JPanel {
private Connection connection;
private JTable table;

public TableDisplay() {
super("Listagem geral dos Pacientes");

String url = "jdbc:odbc:banco.mdb";
String username = "paulo";
String password = "cesar";

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection = DriverManager.getConnection(url, username, password);
}
catch (ClassNotFoundException cnfex) {
System.err.println(
"Falhou a conexao com o banco");
cnfex.printStackTrace();
System.exit(1);
}
catch (SQLException sqlex) {
System.err.println("Conexao desabilitada");
sqlex.printStackTrace();
}

getTable();
setSize(800,370);
setLocation(5,20);
show();
}

private void getTable()
{
Statement statement;
ResultSet resultset;

try {
String query = "Select * from Tab_Pacientes order by nome";
statement = connection.createStatement();
resultset = statement.executeQuery(query);
displayResultSet(resultset);
statement.close();
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
}
}

private void displayResultSet(ResultSet rs )
throws SQLException
{
boolean moreRecords = rs.next();

if (! moreRecords) {
JOptionPane.showMessageDialog(this, "Nao existem registros na tabela!!");
setTitle("Registros Vazios");
return;
}

// setTitle("Listagem Geral dos dados - Tabela Student - bancoDB");

Vector columnHeads = new Vector();
Vector rows = new Vector();

try {
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
columnHeads.addElement(rsmd.getColumnName(i));

do {
rows.addElement(getNextRow(rs, rsmd));
} while (rs.next());

table = new JTable(rows, columnHeads);
JScrollPane scroller = new JScrollPane(table);
getContentPane().add(scroller,BorderLayout.CENTER);
validate();
}
catch (SQLException sqlex) {
sqlex.printStackTrace();
}
}

private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd)
throws SQLException
{
Vector currentRow = new Vector();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
switch(rsmd.getColumnType(i)) {
case Types.VARCHAR: currentRow.addElement(rs.getString(i));
break;
case Types.INTEGER:currentRow.addElement(new Long(rs.getLong(i)));
break;
/*case Types.LONGCHAR:currentRow.addElement(rs.getString(i));
break;*/
default: System.out.println("Tipo dos Dados: " + rsmd.getColumnTypeName(i));
}
return currentRow;
}

public void shutDown()
{
try {
connection.close();
}
catch (SQLException sqlex) {
System.err.println("N� foi poss�el desconectar.");
sqlex.printStackTrace();
}
}
}

Daí tu faz assim pra criar a tabela dentro de um Painel:

TableDisplya tabela = new TableDisplay();

Se precisar, é só falar... :sentido:

T+ :joia:

D

o que tem de errado com essa instrucao???
naum entendo, ainda naum funciona…para mim esta ok…mas mesmo assim a tabela ainda naum aparece!!!

public void actionPerformed(java.awt.event.ActionEvent e) {

TableDisplay tabela=new TableDisplay();

jContentPane.add(tabela);

tabela.setBounds(20,20,150,100);

}
J

Oi

Diana, tenta assim, com o show() :

public void actionPerformed(java.awt.event.ActionEvent e) { TableDisplay tabela=new TableDisplay(); jContentPane.add(tabela); tabela.setBounds(20,20,150,100); show(); }

T+ :joia:

D

Mesmo com o show naum funciona…e o show fica sublinhado em amarelo…
sabe se tem alguma parte do ve para banco de dados…por exemplo…o delphi possivel grids onde voce soh tem que setar o bd e a tabela que os resultados sao exibidos ali…

ai, essa tabela ta me quebrando a cabeca.

J

Oi

Diana, eu uso este código para gerar tabelas e funciona normalmente… Nao sei pq da erros aí…

Sobre o ve, nao sei nao, mas tu pode procurar em www.eclipse.org

T+ :joia:

D

Quando eu usei ela com o jframe ela funcionou tranquilamente…mas agora naum funciona…eu naum sei onde esta o erro…eu sei que o codigo esta ok!!! Entaum vou fazer alguns apontamentos para gente ver o que esta faltando.

Uma coisa!!! eh necessario que eu crie um panel soh para tabela? ou posso usar no mesmo panel do form???

Obrigada!!!

public class TableDisplay extends JPanel { 
private Connection connection; 
private JTable table; 

public TableDisplay() { 
super("Tabela texto") ======essa linha foi retirada, pq ele naum estende mais um jframe

String url = "jdbc:postgresql://10.0.1.1/hf?charset=ISO8859-1"; 
String username = "msitec"; 
String password = "ms340101"; 

try { 
Class.forName("org.postgresql.Driver"); 
connection = DriverManager.getConnection(url, username, password); 
} 
catch (ClassNotFoundException cnfex) { 
System.err.println( 
"Falhou a conexao com o banco"); 
cnfex.printStackTrace(); 
System.exit(1); 
} 
catch (SQLException sqlex) { 
System.err.println("Conexao desabilitada"); 
sqlex.printStackTrace(); 
} 

getTable(); 
setSize(800,370); 
setLocation(5,20); 
//show(); ==========Por exemplo aqui, ele ficou sublinhando em amarelo e com uma exclamacao em amarelo. 
} 

private void getTable() 
{ 
Statement statement; 
ResultSet resultset; 

try { 
String query = "Select * from Alunos order by nome"; 
statement = connection.createStatement(); 
resultset = statement.executeQuery(query); 
displayResultSet(resultset); 
statement.close(); 
} 
catch ( SQLException sqlex ) { 
sqlex.printStackTrace(); 
} 
} 

private void displayResultSet(ResultSet rs ) 
throws SQLException 
{ 
boolean moreRecords = rs.next(); 

if (! moreRecords) { 
JOptionPane.showMessageDialog(this, "Nao existem registros na tabela!!"); 
//setTitle("Registros Vazios");  ===essa linha virou comentario pela mesma razao de cima...

return; 
} 

// setTitle("Listagem Geral dos dados - Tabela Student - bancoDB");  ===idem


Vector columnHeads = new Vector(); 
Vector rows = new Vector(); 

try { 
ResultSetMetaData rsmd = rs.getMetaData(); 
for (int i = 1; i <= rsmd.getColumnCount(); ++i) 
columnHeads.addElement(rsmd.getColumnName(i)); 

do { 
rows.addElement(getNextRow(rs, rsmd)); 
} while (rs.next()); 

table = new JTable(rows, columnHeads); 
JScrollPane scroller = new JScrollPane(table); 
getRootPane().add(scroller,BorderLayout.CENTER); ====aqui era getContentPane() e ele sugeriu getRoot????====

validate(); 
} 
catch (SQLException sqlex) { 
sqlex.printStackTrace(); 
} 
} 

private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd) 
throws SQLException 
{ 
Vector currentRow = new Vector(); 
for (int i = 1; i <= rsmd.getColumnCount(); ++i) 
switch(rsmd.getColumnType(i)) { 
case Types.VARCHAR: currentRow.addElement(rs.getString(i)); 
break; 
case Types.INTEGER:currentRow.addElement(new Long(rs.getLong(i))); 
break; 
/*case Types.LONGCHAR:currentRow.addElement(rs.getString(i)); 
break;*/ 
default: System.out.println("Tipo dos Dados: " + rsmd.getColumnTypeName(i)); 
} 
return currentRow; 
} 

public void shutDown() 
{ 
try { 
connection.close(); 
} 
catch (SQLException sqlex) { 
System.err.println("Nao foi possivel desconectar."); 
sqlex.printStackTrace(); 
} 
} 
}

[color=“red”]Editado para ocnter o BBCode CODE - jeveaux[/color]

J

Oi

Diana. o super() e o setTitle() podem sair mesmo, eles não funcionaram agora, pq a classe não é mais um JFrame e sim JPanel… Já o GetContentPane().add() tu não precisa mudar pra GetRootPane, podes tirar o GetContentPane() e deixar só o add()…

Já o show(), fica sublinhado em amarelo pq ele está deprecado em JPanel mas não está em JFrame, por isso, se tu quiser pode tirar o show a classe da tabela, mas não da tua classe que cria uma instancia da tabela…

No teu form, é bom que tenhas um JPanel para adcionar a tabela…

T+ :joia:

D

Desculpe a insistência…mas você testou? Vc fez alguma aplicação em que tivesse um form e quando clicar no botão aparecerá a tabela???
Sinceramente naum sei onde está o erro!!! E eu sei que está funcionando pq testei com jFrame e ele funciona tranquilamente…
Você tem algum outro exemplo parecido com este, onde de um form você clique no botão consultar e apareça dentro do mesmo form a tabela…

Obrigada pela atenção,

Diana
[email removido]

H

Por que não usar o setVisible(true); ao invés de show(); ?

R

Como fazer uma consulta e? Percorrer em uma jtable?

Alguem tem uma código que faz uma consulta e é selecionado em uma Jtable
A minha Jtable ja está acessando o banco, ja esta preenchida, agora queria fazer uma consulta e q seleciona a pesq na Jtable.

Rodrigo Reis

Criado 18 de março de 2004
Ultima resposta 28 de set. de 2004
Respostas 12
Participantes 4