Alguem sabe me dizer onde esta o erro…
eh o seguinte…essa eh uma tabela modelo…apartir dela eh criada outra com os resultandos que ela deve retornar…
[code]
public class TableModelo extends JTable {
private Object[] col;
private Object[][] lin;
Connection conn=null;
/**
* Construtor Padrão
*/
public TableModelo() {
Conexao();
}
public void Conexao () {
String dbdriver = "org.postgresql.Driver";
String url = "jdbc:postgresql://200.215.114.175/servicos";
String dbuser = "msitec";
String dbpass = "ms340101";
try{
Class.forName(dbdriver);
conn=DriverManager.getConnection(url,dbuser,dbpass);
System.out.println("Banco conectado pelo gerenciador");
}catch (Exception e)
{
System.out.println("Banco não conectado !!");
}
}
/**
* Construtor que se conecta ao Banco de Dados e mostra uma pesquisa
* @param c Conexão que será usada para se conectar ao Banco de Dados
* @param tabelas tabelas que serão consultadas
* @param campos campos que serão mostrados na table
* @param criterios critérios da pesquisa
* @see java.sql
*/
public TableModelo(String tabelas,String campos,String criterios) {
lin = retornarLinhas(tabelas, campos, criterios);
col = retornarColunas(tabelas, campos, criterios);
createModel();
super.setVisible(true);
}
/**
* Retorna o nome das colunas
* @param c uma conexao com o banco de dados
* @param tabelas tabelas que serão pesquisadas
* @param campos campos que serão retornados
* @param criterios parâmetros da cláusula WHERE, ex.: "COD = 001"
* @return obj[] Nome das colunas
* @see java.sql.ResultSet
*/
private Object[] retornarColunas(String tabelas,
String campos, String criterios) {
String query = "SELECT " + campos + " FROM " + tabelas;
if (criterios.length() > 0) query = query + " WHERE " + criterios;
System.out.println(query);
Statement s;
ResultSet rs;
ResultSetMetaData rsmd;
Object obj[] = null;
try {
s =conn.createStatement();
s.executeQuery(query);
rs = s.getResultSet();
rsmd = rs.getMetaData();
obj = new Object[rsmd.getColumnCount()];
for (int i = 1; i <= obj.length; i++) {
obj[i - 1] = rsmd.getColumnName(i);
}
} catch (Exception ex) {
System.out.println("RetornarColunas: " + ex);
}
return (obj);
}
/**
* Retorna toda a pesquisa
* @param c uma conexao com o banco de dados
* @param tabelas tabelas que serão pesquisadas
* @param campos campos que serão retornados
* @param criterios parâmetros da cláusula WHERE, ex.: "COD = 001"
* @return obj[][] conteúdo das pesquisas
* @see java.sql.ResultSet
*/
private Object[][] retornarLinhas(String tabelas,
String campos, String criterios) {
String query = "SELECT " + campos + " FROM " + tabelas;
if (criterios.length() > 0) query = query + " WHERE " + criterios;
Statement s;
ResultSet rs;
ResultSetMetaData rsmd;
Object obj[][] = null;
try {
s =conn.createStatement();
s.executeQuery(query);
rs = s.getResultSet();
rsmd = rs.getMetaData();
int totalLinhas = retornarCount(query);
if (totalLinhas <= 0) {
obj = new Object[1][1];
obj[0][0] = "ERRO: Nenhuma linha afetada";
return (obj);
}
obj = new Object[totalLinhas][rsmd.getColumnCount()];
int i = 0;
while (rs.next()) {
Object obj2[] = new Object[rsmd.getColumnCount()];
for (int j = 1; j <= rsmd.getColumnCount(); j++) {
obj2[j - 1] = rs.getString(j);
}
obj[i] = obj2;
i++;
}
}
catch (Exception ex) {
System.out.println("RetornarLinhas: " + ex);
obj = new Object[1][1];
obj[0][0] = "ERRO: " + ex;
return (obj);
}
return (obj);
}
/**
* Conta a quantidade de linhas retornadas da pesquisa
* @param c uma conexao com o banco de dados
* @param query instrução sql
* @return quant quantidade de linhas
* @see java.sql.ResultSet
*/
private int retornarCount(String query) {
Statement s;
ResultSet rs;
int quant = 0;
try {
s = conn.createStatement();
s.executeQuery(query);
rs = s.getResultSet();
while (rs.next()) {
quant++;
}
} catch (Exception ex) {
System.out.println("RetornarCount: " + ex);
return (0);
}
return (quant);
}
/**
* Insere linhas na Tabela
* @param quant quantidade de linhas que serão adicionadas
*/
public void insertRows(int quant) {
Object[][] obj = lin;
lin = new Object[obj.length + quant][col.length];
for (int i = 0; i < lin.length; i++) {
if (i < obj.length) {
lin[i] = obj[i];
} else {
for (int j = 0; j < lin[i].length; j++) {
lin[i][j] = "";
}
}
}
createModel();
super.setVisible(true);
}
/**
* Deleta linha(s) selecionada(s)
*/
public void deleteRow() {
int[] row = super.getSelectedRows();
for (int i = (row.length - 1); i >= 0; i--) {
deleteRow(row[i]);
}
createModel();
super.setVisible(true);
}
private void deleteRow(int row) {
Object[][] o = lin;
lin = new Object[o.length - 1][col.length];
int j = 0;
for (int i = 0; i < o.length; i++) {
if ((i != row)) {
lin[j] = o[i];
j++;
}
}
}
private void createModel() {
int[] colW = new int[super.getColumnCount()];
for (int i = 0; i < colW.length; i++) {
colW[i] = super.getColumn(super.getColumnName(i)).getWidth();
}
TableModel tableModel = new AbstractTableModel() {
public int getColumnCount() {
return col.length;
}
public int getRowCount() {
return lin.length;
}
public Object getValueAt(int row, int col) {
return lin[row][col];
}
public String getColumnName(int column) {
return ("" + col[column]);
}
public boolean isCellEditable(int row, int col) {
return (false);
}
public void setValueAt(Object aValue, int row, int column) {
lin[row][column] = aValue;
}
};
super.setModel(tableModel);
for (int i = 0; i < colW.length; i++) {
super.getColumn(super.getColumnName(i)).setPreferredWidth(colW[i]);
}
}
}
[cod]
mas o problema eh que ele esta retornando colunas e linhas null…se alguem ver o erro ou tiver um modelo que faca isso que eu quero, por favor poderia me comunicar…
obrigada…
ah, antes de mais nada…ja verifiquei o nome da tabela, o nome do banco, o driver, estah tudo ok…