Seguinte, eu preciso de fazer um esquema usando DAO, preciso inserir/alterar uns registros.
Eh algo do tipo, se existir o registro atualiza se nao insere.
to tentando assim.
// classe modulospublicclassModulos{privateLongid;privateStringmodulo;privateStringnomeModulo;//get e set// classe perfilpublicclassPerfil{privateLongid;privateStringperfil.privateStringobservacao;//get e set}//classe permissoes, relacionada entre Perfil e ModulospublicclassPermissoes{privateLongid;privateStringinserir;privateStringalterar;privateStringconsultar;privateStringimprimir;privateModulosmodulo;privatePerfilperfil;// get e set}}// aqui onde estou populando os beans e tentando usar o DAOPerfilperfil=newPerfil();perfil.setId(Long.parseLong(idPerfil.getText()));Modulosmodulo=newModulos();Permissoespermissoes=newPermissoes();PermissoesDAOpmDAO=newPermissoesDAO();for(intx=0;x<tabelaPermissoes.getRowCount();x++){modulo.setId(tabelaPermissoes.getValueAt(x,0);// id dos modulosmodulo.setInserir(tabelaPermissoes.getValueAt(x,2);modulo.setAlterar(tabelaPermissoes.getValueAt(x,3);modulo.setConsultar(tabelaPermissoes.getValueAt(x,4);modulo.setImprimir(tabelaPermissoes.getValueAt(x,5);permissoes.setPerfil(perfil);permissoes.setModulos(modulo);pmDAO.inserir(permissoes);}// aqui o meu DAO, onde tento inserir ou alterar caso exista.publicclassPermissoesDAO{publicvoidinserir(Permissoespermissoes)throwsSQLException{PreparedStatementstm=this.con.prepareStatement("REPLACE INTO permissoes (idperfil, idmodulo, inserir, alterar, consultar, imprimir) VALUES (?,?,?,?,?,?)");stm.setLong(1,permissoes.getPerfil().getId());stm.setLong(2,permissoes.getModulo().getId());stm.setString(3,permissoes.getInserir());stm.setString(4,permissoes.getAlterar());stm.setString(5,permissoes.getConsultar());stm.setString(6,permissoes.getImprimir());stm.executeUpdate();stm.close();}}
O REPLACE INTO do mysql, permite alterar ou inserir registros, porem nao estou conseguindo fazer isso…Ou alguma outra maneira de fazer.
Funciona assim…Eu tenho um cadastro de Perfil e um cadastro de Modulos, logo depois eu tenho a tela de Permissoes. Nesta tela de permissoes eu tenho o Jtextfield(idPerfil), onde insiro o codigo do perfil. Logo abaixo eu tenho um JTable com todos os codigos dos modulos que tbm cadastrei no cadastro de modulos.
Bem, eu preciso inseri-los, isso eu consigo. O que nao consigo eh se no caso de eu cadastrar um novo modulo eu inseri-lo juntamente com as permissoes que ja inseri antes com relacao ao perfil, entende ???
seria algo assim.
tabela Perfil
tabela Modulos
tabela Permissoes – aqui eu insiro o codigo do Perfil e o codigo do Modulo.
No caso de eu cadastrar um novo modulo, eu quero pegar o codigo do perfil ja cadastrado e inserir o novo modulo que cadastrei.
Não sei fazer isso, por isso gostaria de saber uma maneira de fazer isso. Alguma sugestão ??? Exemplo ???
obrigado
daveiga
Quando você roda o SQL gerado pela sua aplicação manualmente funciona como você espera?
fernandopaiva
opa Daveiga…
Para inserção sim, eu consigo inserir as permissoes normalmente a primeira vez.
O que preciso, eh se caso o usuario cadastrar um novo modulo ele possa vincula-lo ao perfil que ja cadastrei antes, e assim dar as permissoes ao novo modulo cadastrado com o perfil existente…Espero que entenda isso. !!!
pseudo codigo seria.
Eu queria fazer isso apenas na linha do “REPLACE INTO” do mysql que faz o trabalho de inserir ou alterar, mas ainda nao encontrei como fazer.
Pelo visto vou acabar tendo que usar o bom e velho " if " …kkkkk !!!
use o hibernate que ele cuida de tudo isso pra vc!!!
fernandopaiva
pois eh, hibernate naum eh uma opcao…eu ateh comecei a usa-lo, porem achei bem mais complicado e sinceramente prefiro jdbc pois tenho mais controle sobre minha aplicação.
alguma outra sugestao de como fazer isso q preciso???
obrigado
fernandopaiva
Alguma sugestao ??? …
Acho q vou ter q usar o bom e velho if msm…dando um for na coluna dos codigos de modulos no jtable e verificando se ja estaum cadastrados para o perfil juntamente com o while.
[]s
fernandopaiva
Salve galera…
Consegui resolver meu problema.Tive msm q usar o bom e velho if para resolver.
aqui como fiz.
//esse eh meu DAO publicvoidalterar(Yperfilmodulopm)throwsSQLException{PreparedStatementstm=this.con.prepareStatement("SELECT * FROM yperfilmodulo "+"WHERE yperfilmodulo.idperfil = ? AND yperfilmodulo.idmodulo = ?");stm.setLong(1,pm.getPerfil().getId());stm.setLong(2,pm.getModulo().getId());ResultSetrs=stm.executeQuery();PreparedStatementstmInsertUpdate;if(rs.next()){stmInsertUpdate=this.con.prepareStatement("UPDATE yperfilmodulo SET "+"inserir = ?, alterar = ?, consultar = ?, imprimir = ? "+"WHERE yperfilmodulo.idcontrole = ? AND yperfilmodulo.idmodulo = ?");stmInsertUpdate.setString(1,String.valueOf(pm.getInserir()));stmInsertUpdate.setString(2,String.valueOf(pm.getAlterar()));stmInsertUpdate.setString(3,String.valueOf(pm.getConsultar()));stmInsertUpdate.setString(4,String.valueOf(pm.getImprimir()));stmInsertUpdate.setLong(5,pm.getIdControle());stmInsertUpdate.setLong(6,pm.getModulo().getId());}else{stmInsertUpdate=this.con.prepareStatement("INSERT INTO yperfilmodulo (idcontrole, idperfil, idmodulo, inserir, alterar, consultar, imprimir) "+"VALUES (?,?,?,?,?,?,?)");stmInsertUpdate.setLong(1,pm.getIdControle());stmInsertUpdate.setLong(2,pm.getPerfil().getId());stmInsertUpdate.setLong(3,pm.getModulo().getId());stmInsertUpdate.setString(4,String.valueOf(pm.getInserir()));stmInsertUpdate.setString(5,String.valueOf(pm.getAlterar()));stmInsertUpdate.setString(6,String.valueOf(pm.getConsultar()));stmInsertUpdate.setString(7,String.valueOf(pm.getImprimir()));}stmInsertUpdate.executeUpdate();stmInsertUpdate.close();}//aqui os beanspublicclassYperfil{privateLongid;privateStringperfil;privateStringobservacao;//sets and gets}publicclassYmodulos{privateLongid;privateStringmodulo;privateStringnomeModulo;privateStringobservacao;//sets and gets}publicclassYperfilmodulo{privateLongid;privateLongidControle;privateBooleaninserir;privateBooleanalterar;privateBooleanconsultar;privateBooleanimprimir;privateYperfilperfil;privateYmodulosmodulo;//sets and gets}
é isso ae…Como não consegui fazer de outra maneira, recorri ao if, 100% funcionando.