Popular AbstractTableModel com dados do Banco

3 respostas
G

Pessoal estou parando de usar DefaultTableModel e criando meu próprio Model, mas nessa tentativa estou tentando popular a tabela com os dados mas não estou conseguindo alguem pode me sugerir algum modelo vou anexar o meu código;

vocês podem perceber que há um return no private Servico ele só gera um dados o ultimo capitado no banco como eu faço para pegar todos e colocar na classe tipo um Loop dentro dessa classe para não dar erro.
private Servico getServico(){
    
         Servico serv = new Servico();
     
       
         try {
             
            
           conn = DriverManager.getConnection("jdbc:odbc:fashionhair","root","");
            
           Statement stmt = conn.createStatement();
          
           ResultSet res = stmt.executeQuery("Select * from servico order by (cod_serv)");
           
          

           while (res.next()){
           
          serv.setcodigoservico(res.getString("cod_serv")); 
          serv.setnomeservico(res.getString("nome_servico"));
          serv.setprecoservico(res.getString("preco"));
          
      
          
           }   
           
           res.close();
           
            } catch (SQLException ex) {
               ex.printStackTrace();
            } 
    
    return serv;
   
    }

    private List<Servico> getServicos() {
                    
		List<Servico> sv = new ArrayList<Servico>();
		for (int i = 0; i <sv.size(); i++) {
			sv.add(getServico());
		}
		return sv;
	}
    
    private void addServico() {
		getModel().addServico(getServico());
	}
	
	private void addServicos() {
		getModel().addListaDeServico(getServicos());
	}

att

Gabriel

3 Respostas

V

A maneira certa é popular a lista direto:

private List&lt;Servico&gt; getServicos(){ List&lt;Servico&gt; servicos = new ArrayList&lt;Servico&gt;(); try { conn = DriverManager.getConnection("jdbc:odbc:fashionhair","root",""); PreparedStatement stmt = conn.prepareStatement("SELECT * FROM servico ORDER BY cod_serv"); ResultSet res = stmt.executeQuery(); while (res.next()){ Servico serv = new Servico(); serv.setcodigoservico(res.getString("cod_serv")); serv.setnomeservico(res.getString("nome_servico")); serv.setprecoservico(res.getString("preco")); servicos.add(servico); } res.close(); stmt.close(); conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } return servicos }

G

Ah entendi valeu mesmo ViniGodoy deu certo aqui Obrigado =) :smiley:

G

Outra ocorreu de eu ter que usar um INNER JOIN em uma de minhas JTable, pelo que percebi ele não faz igual o SELECT quando está no laço ele já vai setando na JTable. tenho duas perguntas:

1- Como eu devo setar dados do banco atraves do INNER JOIN?
2- Porque existe essa diferencia no AbstractTableModel quando vamos setar dados vindo do SELECT e INNER JOIN?

att.

Gabriel

Criado 14 de janeiro de 2012
Ultima resposta 18 de jan. de 2012
Respostas 3
Participantes 2