Esse é meu metodo de insert... public int insert(T objectVO, String id ) { //Início do SQL Insert String sql = String.format("INSERT INTO %s (",tableName);
// última chave primária criada // será o retorno do método insert int lastInsertId = 0; //Lista de campos do VO. // Lembre que os campos são dinâmicos // Cada campo no VO é um campo na tabela ArrayList<String> fields = new ArrayList<String>(); //Percorro todas as propriedades da classe VO. Cada propriedade // possui um correspondente no campo da tabela for (Field classVOField : classVO.getDeclaredFields() ) { fields.add(classVOField.getName()); } //Agora uso a lista de campos para preencher o sql for (int i = 0; i < fields.size(); i++) { if (!(fields.get(i).equals(id))) { sql += fields.get(i); if (i != fields.size()-2)//-2 para tirar o ID sql += ","; } } sql += ") VALUES ("; for (int i = 0; i < fields.size(); i++) { //if (fields.get(i) == "id") //continue; if (!(fields.get(i).equals(id))) { try { //Obtenho a definição do campo Field fieldDef = classVO.getField(fields.get(i)); //uso a definição do campo para obter // o valor que veio do Flex. sql += String.format("'%s'",fieldDef.get(objectVO)); //nao poe a vírugla no último item if (i != fields.size()-2) sql += ","; } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } } } sql += ")"; JOptionPane.showMessageDialog(null, "Insert " + sql); //Agora executamos o SQL try { int rows = this.stm.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS); ResultSet resultSet = this.stm.getGeneratedKeys(); // this.stm.execute(sql); if ( resultSet != null && resultSet.next() ) { lastInsertId = resultSet.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } //JOptionPane.showMessageDialog(null, "Insert " + sql + " " + lastInsertId); return lastInsertId; } como eu poderia colocar essas informações em lote e dar um insert em lote.....? Qualquer dúvida estou a disposição. *Robinho* *Analista/Programador de Sistemas* *Skype: robinhocne* *"A fé em Deus nos faz crer no incrível, ver o invisível e realizar o impossível."* Em 19 de dezembro de 2013 17:03, Helio Antonio Francisco Silva < helio.afsi...@gmail.com> escreveu: > Cara eu posso ta falando besteira, mas eu faria de uma forma BEMMM > diferente. > > Primeiro, eu arrumaria o seu codigo: > > for(var a:int = 0; a < telaLiberadas.length; a++){ > > usuTela.cd_usuario = telaLiberadas[a].cd_usuario; > usuTela.cd_empresa = telaLiberadas[a].cd_empresa; > usuTela.cd_tela = telaLiberadas[a].cd_tela; > usuTela.in_novo = telaLiberadas[a].in_novo; > usuTela.in_pesquisar = telaLiberadas[a].in_pesquisar; > usuTela.in_remover = telaLiberadas[a].in_remover; > usuTela.in_salvar = telaLiberadas[a].in_salvar; > usuTela.dt_cadastro = telaLiberadas[a].dt_cadastro; > usuTela.hr_cadastro = telaLiberadas[a].hr_cadastro; > usuTela.cd_usucad = telaLiberadas[a].cd_usucad; > usuTela.cd_usutela = telaLiberadas[a].cd_usutela; > > if (telaLiberadas[a].cd_usutela != 0 ){ > dsUsuTelas.update(usuTela,"cd_usutela"); > } else { > //pesquisa se a tela foi inclusa no BD para atualização > > pesquisaUsuTelasID(telaLiberadas[a].cd_tela,telaLiberadas[a].cd_empresa,telaLiberadas[a].cd_usuario); > if (vcd_usutela != null) { > usuTela.cd_usutela = parseInt(vcd_usutela); > dsUsuTelas.update(usuTela,"cd_usutela"); > } else { > dsUsuTelas.insert(usuTela,"cd_usutela"); > } > > nao tem sentido e colocar o objeto varias vezes, sendo que todos sao a > mesma coisa e somente a chamada pra inerir ou update e diferente. > > Segundo, EU NUNCA a cada insert eu enviaria para o servidor, eu faria uma > coletania de objectos e ai sim enviar para o servidor e la dentro eu faria > o loop e inseriria varios, ate por que da pra fazer insert em lot e nao 1 > por 1, a diferença e gritante. > to passando por uns problemas iguais, qualquer coisa me da um toque que eu > te ajudo. > > > > 2013/12/19 Robinho de Morais <robinhodemor...@gmail.com> > >> Pessoal, já tentei de várias maneiras, mas não consegui resolver o >> problema, vamos lá... >> >> Tenho em um datagrid as seguintes informações >> >> <https://lh5.googleusercontent.com/-GMPEaUxu0LA/UrMxpzO6KEI/AAAAAAAAEPs/WOEMIL1duvw/s1600/Sem+t%C3%ADtulo.png> >> >> veja que eu tenho a tela 1-cadUsuarios na empresa 1 com o cd_usutela, >> esse cd_usutela é a chave da tabela de liberação de telas, então quer dizer >> que essa já está gravada no banco.... >> ai tenho a tela 3-cadUsuEmpresas na empresa 2 que acabei de incluir no >> datagrid... >> >> Para salvar eu criei um loop no arraycollection do datagrid... >> >> for(var a:int = 0; a < telaLiberadas.length; a++){ >> >> if (telaLiberadas[a].cd_usutela != 0 ){ >> usuTela.cd_usuario = telaLiberadas[a].cd_usuario; >> usuTela.cd_empresa = telaLiberadas[a].cd_empresa; >> usuTela.cd_tela = telaLiberadas[a].cd_tela; >> usuTela.in_novo = telaLiberadas[a].in_novo; >> usuTela.in_pesquisar = telaLiberadas[a].in_pesquisar; >> usuTela.in_remover = telaLiberadas[a].in_remover; >> usuTela.in_salvar = telaLiberadas[a].in_salvar; >> usuTela.dt_cadastro = telaLiberadas[a].dt_cadastro; >> usuTela.hr_cadastro = telaLiberadas[a].hr_cadastro; >> usuTela.cd_usucad = telaLiberadas[a].cd_usucad; >> usuTela.cd_usutela = telaLiberadas[a].cd_usutela; >> dsUsuTelas.update(usuTela,"cd_usutela"); >> } else { >> usuTela.cd_usuario = telaLiberadas[a].cd_usuario; >> usuTela.cd_empresa = telaLiberadas[a].cd_empresa; >> usuTela.cd_tela = telaLiberadas[a].cd_tela; >> usuTela.in_novo = telaLiberadas[a].in_novo; >> usuTela.in_pesquisar = telaLiberadas[a].in_pesquisar; >> usuTela.in_remover = telaLiberadas[a].in_remover; >> usuTela.in_salvar = telaLiberadas[a].in_salvar; >> usuTela.dt_cadastro = telaLiberadas[a].dt_cadastro; >> usuTela.hr_cadastro = telaLiberadas[a].hr_cadastro; >> usuTela.cd_usucad = telaLiberadas[a].cd_usucad; >> //pesquisa se a tela foi inclusa no BD para atualização >> >> pesquisaUsuTelasID(telaLiberadas[a].cd_tela,telaLiberadas[a].cd_empresa,telaLiberadas[a].cd_usuario); >> if (vcd_usutela != null) { >> usuTela.cd_usutela = parseInt(vcd_usutela); >> dsUsuTelas.update(usuTela,"cd_usutela"); >> } else { >> dsUsuTelas.insert(usuTela,"cd_usutela"); >> } >> >> o usuTela é o meu VO, então no loop eu incluo as informações no VO para >> fazer o insert/update através da minha função insert/update..... >> >> Quando rodo esse loop...ele bagunça o registro...veja abaixo nas >> imagens... >> >> >> <https://lh6.googleusercontent.com/-1UqyX6RRDyg/UrMz-0ivFtI/AAAAAAAAEP4/0uFOzRUZtKI/s1600/up.png> >> >> Para o primeiro registro, como está salvo no banco iria fazer uma >> atualização, mas veja que a empresa é 1 e tela 1 do usutela 103, mas ele >> está pegando do ultimo registro... >> >> >> e >> >> >> >> <https://lh5.googleusercontent.com/-5WpbR9Dy4VI/UrM0VVTQ4kI/AAAAAAAAEQA/cSl27BXnQmk/s1600/in.png> >> >> >> No insert ele inclui os registros certo...conforme a sua linha do >> banco.... >> >> >> To 2 semanas tentando de várias maneiras, mas não consegui...alguém pode >> me ajudar....? >> >> >> >> >> >> -- >> -- >> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com >> Para sair da lista, envie um email em branco para >> flexdev-unsubscr...@googlegroups.com >> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >> --- >> Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" >> dos Grupos do Google. >> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, >> envie um e-mail para flexdev+unsubscr...@googlegroups.com. >> Para obter mais opções, acesse https://groups.google.com/groups/opt_out. >> > > > > -- > *Hélio Antonio Francisco Silva* > Desenvolvedor web > Certificado Flash developer > Certificado Flash Design > Certificado web developer > Consultor Microsiga / Totvs > Desenvolvedor ADVPL / ASP > Analista de sistemas e ERP Sênior. > > -- > -- > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com > Para sair da lista, envie um email em branco para > flexdev-unsubscr...@googlegroups.com > Mais opções estão disponíveis em http://groups.google.com/group/flexdev > --- > Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" > dos Grupos do Google. > Para cancelar a inscrição neste grupo e parar de receber seus e-mails, > envie um e-mail para flexdev+unsubscr...@googlegroups.com. > Para obter mais opções, acesse https://groups.google.com/groups/opt_out. > -- -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev --- Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" dos Grupos do Google. Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para flexdev+unsubscr...@googlegroups.com. Para obter mais opções, acesse https://groups.google.com/groups/opt_out.