Inserir dados de um Banco de Dados em um jTable?

2 respostas
T
Como faço para inserir os dados de um banco de dados em um componente jTable???

Eu  tentei de várias formas, mas nada funcionou.

Ex:

String[] Cab =

{

“c1”,“c2”, “c3”, “c4”,

};

String[][] Val =

{

// Como inserir um bloco de repetição aqui, por exemplo?
{ “t”,“e”, “s”, “t” },
// repetir.

};
    
    jTable1.setModel(new javax.swing.table.DefaultTableModel
      (  Val,  Cab )
    );

Obs. Eu estou usando editor NetBeans.

Obrigado!!!
Taui

2 Respostas

J

Oi

Taui, de uma olhada neste código, ele faz exatamente o que tu precisa.

//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 JFrame {
	private Connection connection;
	private JTable table;
	
	public TableDisplay() {

		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 conexão com o banco");
			cnfex.printStackTrace();
		    System.exit(1);
		}
		catch (SQLException sqlex) {
	    	System.err.println("Conexão 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";
			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, "Não existem registros na tabela!!");
			setTitle("Registros Vasios");
			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ão foi possível desconectar.");
			sqlex.printStackTrace();
		}
	}
	
	public static void montaTable()
	{
		final TableDisplay app = new TableDisplay();
	    app.addWindowListener(new WindowAdapter() {
	    	public void windowClosing(WindowEvent e)
	    	{
	    	}
	    }
	  );
	}
    public static void main(String args[]) {
        montaTable();
     }	

}

T+

T

Jeveaux!
Era exatamente isso que eu estava precisando,
estava procurando como fazer isso à dias,
ainda bem que há pessoas como vc, disposto em ajudar.

Muito obrigado mesmo!!!

Taui

Que esse exemplo ajude muitos outros!!!

Criado 3 de fevereiro de 2004
Ultima resposta 4 de fev. de 2004
Respostas 2
Participantes 2