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???
Tabela
12 Respostas
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:
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]
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:
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);
}
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:
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.
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:
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]
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:
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]
Por que não usar o setVisible(true); ao invés de show(); ?
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