Oi!!
Estou criando uma janela que trás todos os registros do banco de dados em uma Jtabel.
No banco tenho uma tabela chamada clientes com os seguintes campos:
Id(chave primaria) , nome , endereco, telefone, cep , cidade, numero, estado, email, celular e fotos.
Usei o seguinte codigo na classe Relatorio:
[color=darkblue]package relatorio;
[color=#444444]/**
*
-
@author Vinícius
/
import java.awt.;
import java.awt.event.;
import java.sql.;
import javax.swing.;
import java.util.;/* This method is called from within the constructor to
- initialize the form.
- WARNING: Do NOT modify this code. The content of this method is
- always regenerated by the Form Editor.
*/
// <editor-fold defaultstate=“collapsed” desc=“Generated Code”>
public class Relatorio extends JFrame{
private Connection con;
private JTable tabela;
public Relatorio(){
super("Agenda - Nomes" );
String url = "jdbc:odbc:clientes";
String usuario = "";
String senha = "";
try{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
con = DriverManager.getConnection(url, usuario, senha);
}
catch (Exception e){
JOptionPane.showMessageDialog(null,"Conexão não estabelecida","Mensagem do Programa", JOptionPane.ERROR_MESSAGE);
}
buscaTabela();
setSize(800,400);
setVisible(true);
}
public static void main(String args[]){
Relatorio app = new Relatorio();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void buscaTabela(){
Statement st;
ResultSet res;
try{
Vector cabecalho = new Vector();
Vector linhas = new Vector();
st = con.createStatement();
res = st.executeQuery("SELECT * FROM clientes ORDER BY Nome");
res.next();
ResultSetMetaData rsmd = res.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do{
linhas.addElement(proximaLinha(res,rsmd));
}
while (res.next());
tabela = new JTable(linhas,cabecalho);
JScrollPane scroller = new JScrollPane( tabela );
getContentPane().add(scroller, BorderLayout.CENTER);
validate();
st.close();
}
catch (SQLException sqlex){
}
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd){
Vector LinhaAtual = new Vector();
try{
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
switch(rsmd.getColumnType(i)){
case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i));
break;
case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i));
break;
case Types.NUMERIC: LinhaAtual.addElement(new Long(rs.getLong(i)));
break;
}
}
catch(SQLException e){
}
return LinhaAtual;
}
}[/color][/color]
porem quando compilo o programa e abro a janela de relatorios ele me trás o cabeçalho certinho, porém não me tras dos dados da coluna ID. Na coluna de titulo ID, vem os nomes, de endereco vem os numeros e assim por diante.
Creio que seja um errinho simples de lógica, porém não consegui achá-lo.
aguardo uma ajuda, enquanto isso vou tentando solucionar esse problema.
Obrigado!!