Exatamente esse o ponto. Também não vejo ligação entre eles. Porém, julgo que quando eu executo o código e ele tenta colocar os dados na table ele passa por getColumnCount e gera a exceção.
Perdoe-me a falta de código, mas coloquei a parte que imaginei ser importante.
Pacote de conexão - Conecta e desconecta com o banco.
package Conexao;
import com.sun.rowset.JdbcRowSetImpl;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.rowset.JdbcRowSet;
import javax.swing.JOptionPane;
public class Conexao {
public JdbcRowSet rowSet = new JdbcRowSetImpl();
Properties properties = new Properties();
FileInputStream arquivoDePropriedades = null;
public Conexao() {
}
public void getConexao() {
try {
arquivoDePropriedades = new FileInputStream("conexao.properties");
properties.load(arquivoDePropriedades);
try {
rowSet.setUrl(properties.getProperty("jdbc.url"));
rowSet.setUsername(properties.getProperty("jdbc.usuario"));
rowSet.setPassword(properties.getProperty("jdbc.senha"));
}catch(SQLException e) {
JOptionPane.showMessageDialog(null,"Erro de execução em comandos SQL!");
}
}catch(FileNotFoundException e) {
JOptionPane.showMessageDialog(null,"O arquivo de properiedades não foi encontrado!!");
}catch(IOException e) {
JOptionPane.showMessageDialog(null,"Erro ao carregar arquivo!!");
}
}
public void closeConexao() {
try {
rowSet.close();
}catch(Exception e) {
JOptionPane.showMessageDialog(null,"Erro ao fechar objetos de controle de SQL!");
}
}
}
Pacote de Visualização - Cria a table e seta o comando SQL.
package Layout;
import Conexao.Conexao;
import javax.swing.JTable;
public class Table {
ResultSetTableModel modelo = new ResultSetTableModel();
JTable table;
public Table() {
table = new JTable(modelo);
}
public void setQuery(String Query) {
Conexao con = new Conexao();
con.getConexao();
modelo.executeQuery(Query);
con.closeConexao();
}
}
Pacote de visualização - cria o tableModel da table.
package Layout;
import Conexao.Conexao;
import java.sql.*;
import javax.swing.JOptionPane;
import javax.swing.table.AbstractTableModel;
public class ResultSetTableModel extends AbstractTableModel {
ResultSetMetaData mdt;
Conexao con = new Conexao();
private int nor;
@Override
public int getRowCount() {
return(nor);
}
@Override
public int getColumnCount() {
try {
return(mdt.getColumnCount());
}catch(SQLException e) {
JOptionPane.showMessageDialog(null, "Erro ao retornar o número de colunas!!", "Erro!", JOptionPane.PLAIN_MESSAGE);
}
return(0);
}
@Override
public Object getValueAt(int row, int column) {
try {
con.rowSet.absolute(row+1);
return(con.rowSet.getObject(column+1));
}catch(SQLException e) {
JOptionPane.showMessageDialog(null, "Erro ao receber valor nas linha específica!!", "Erro!", JOptionPane.PLAIN_MESSAGE);
}
return("");
}
public void executeQuery(String Query) {
try {
con.rowSet.setCommand(Query);
con.rowSet.execute();
mdt = con.rowSet.getMetaData();
con.rowSet.last();
nor = con.rowSet.getRow();
fireTableStructureChanged();
}catch(SQLException e) {
JOptionPane.showMessageDialog(null, "Erro ao executar comando!!", "Erro", JOptionPane.PLAIN_MESSAGE);
}
}
}
Espero que entenda o código, mas acho que está com muitos erros!