PQ nao ta Rodando? JTable com BD

1 resposta
diego_perez
To querendo retorna uma consulta ao banco numa JTable, Me ajudem aiii nao sei pq nao ta rodando vlw...
package DAO;

import java.sql.*;   
import java.awt.*;   
import javax.swing.*;   
  
  
  
import java.util.*;  
  
  
  
public class TabelaRegistro extends JPanel {   
private Connection connection;   
private JTable table;   
  
public TabelaRegistro() {   
super();   
  
  
  
  
String dbURL ="jdbc:mysql://localhost:3307/sistemacomercial";   
String usuario = "root";  
String senha = "123456";  
  
  
  
  
try {   
Class.forName("com.mysql.jdbc.Driver");   
connection = DriverManager.getConnection(dbURL, usuario, senha);   
}   
catch (ClassNotFoundException cnfex) {   
System.err.println(   
"");   
cnfex.printStackTrace();   
System.exit(1);   
}   
catch (SQLException sqlex) {   
System.err.println("");   
sqlex.printStackTrace();   
}   
  
getTable();   
this.setSize(450, 370);   
setLocation(5,20);   
  
}   
  
private void getTable()   
{   
Statement statement;   
ResultSet resultset;   
  
try {   
String query = "Select codigo,fornecedor,descricao,quantidade,data,valor,observacao  from cadastroproduto order by data";   
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();   
return;   
}   
  
  
  
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);   
add(scroller,BorderLayout.CENTER);   
scroller.setPreferredSize(new java.awt.Dimension(447, 353));  
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();   
}   
}   
  
}

1 Resposta

ViniGodoy
  1. Corrija sua identação;
  2. Diga que erro está dando;
  3. Para usar um JTable, você precisará criar um TableModel. Não use o DefaultTableModel.
  4. Um recorset começa antes do primeiro registro. Você deve chamar o next() antes da primeira leitura num bloco while, não num do.while();
  5. Não programe por tentativa e erro, leia atentamente a documentação de tudo antes de começar. Seu código está repleto de más práticas que são exaustivamente explicadas na própria documentação do java.
Criado 21 de fevereiro de 2011
Ultima resposta 22 de fev. de 2011
Respostas 1
Participantes 2