Qual a forma mais rapida para gravar um AbstractTableModel em um banco de dados na WEB

3 respostas
A

Ola amigos, estou tendo muita lentidão ao gravar dados de uma AbstractTableModel para um banco de dados WEB
Teria um jeito mais adequado e rápido para efetuar esse procedimento?

Veja como estou fazendo:

int linhas = getModel().getRowCount() -1;
                    if (linhas > 0) {
                       
                        List<ClienteBean> listbean2 = new ArrayList<ClienteBean>();
                        for (int i = 0; i < linhas; i++) {

                                listbean2.add(getModel().getRow(i));
                                                
                        }
                        
                         try{
            String VSql = "INSERT INTO ag_"+sms.main.usuario+" (grupo, tipo, nome, celular, nascimento, extra) VALUES('"+(String) jComboBox1.getSelectedItem()+"', '0', ?, ?, ?, ?)";
            PreparedStatement comando = conexao.getConexao().prepareStatement(VSql);
            SimpleDateFormat dg = new SimpleDateFormat("dd/MM/yyyy");

                        for (ClienteBean p : listbean2) {
                            Date nascimento;
                            try{
                                nascimento = new java.sql.Date(dg.parse(p.getIdade()).getTime());
                            } catch (ParseException e) {
                                nascimento =null;
                            }  

                         comando.setString(1, p.getNome());
                         comando.setString(2, p.getCod());
                         comando.setDate(3, nascimento);                 
                         comando.setString(4, p.getExtra());
                         comando.executeUpdate();
                     
                        }
                        comando.close();
                        JOptionPane.showMessageDialog(null,
                                    "Cadastrado efetuado com sucesso!",
                                    "Contatos Cadastrados!",
                                    JOptionPane.PLAIN_MESSAGE, new javax.swing.ImageIcon(getClass().getResource("/imagens/icone_sucesso.png")));
                        getModel().limpar();
                        getModel().addEmptyRow();
                        
                        }  catch (SQLException e) {
            jPanel2.setVisible(false);
                            JOptionPane.showMessageDialog(null, "Erro de conexão com banco de dados, tente novamente");
                        }
                        
                            
                        }

Agradeço a ajuda!

3 Respostas

marciosouzajunior

Tenta concatenar os comandos numa StringBuffer e chama o executeUpdate() só no final.

fbl.lucas

Essa poderia ser uma outra forma onde você percorre a lista de itens apenas uma vez

if (getModel().getRowCount() > 1) {
	 try{
		StringBuilder VSql = new StringBuilder("INSERT INTO ag_");
		VSql.append(sms.main.usuario)
			.append(" (grupo, tipo, nome, celular, nascimento, extra) VALUES('")
			.append(jComboBox1.getSelectedItem())
			.append("', '0', ?, ?, ?, ?)");
        PreparedStatement comando = conexao.getConexao().prepareStatement(VSql.toString());
        SimpleDateFormat dg = new SimpleDateFormat("dd/MM/yyyy");

        for(int i = 0; i < getModel().getRowCount() - 1; i++) {
        	ClienteBean p = getModel().getRow(i);
            try{
            	comando.setDate(3, new java.sql.Date(dg.parse(p.getIdade()).getTime()));
            } catch (ParseException e) {
            	comando.setDate(3, null);
            }
            comando.setString(1, p.getNome());
            comando.setString(2, p.getCod());
            comando.setString(4, p.getExtra());
            comando.addBatch(); // adiciona na fila
                     
        }
  comando.executeBatch(); //insere todos da fila
        comando.close();
        JOptionPane.showMessageDialog(null,
        		"Cadastrado efetuado com sucesso!",
                "Contatos Cadastrados!",
                JOptionPane.PLAIN_MESSAGE, new javax.swing.ImageIcon(getClass().getResource("/imagens/icone_sucesso.png")));
        getModel().limpar();
        getModel().addEmptyRow();
                        
    } catch (SQLException e) {
        jPanel2.setVisible(false);
        JOptionPane.showMessageDialog(null, "Erro de conexão com banco de dados, tente novamente");
    }                           
}
A

Vlw amigos !!! resolveram meu problema !

Vcs são foda!

Abraço!

Criado 25 de julho de 2012
Ultima resposta 26 de jul. de 2012
Respostas 3
Participantes 3