[Resolvido]retorno do insert com o returning

6 respostas
D

Tenho uma aplicação e quero que no momento em que o cadastro for inserido, ele retorne o id do cadastro.
Porém não estou conseguindo fazer com que o return volte até a minha swing.
Segue minha DAO:

public String cadastraDisciplina(portariaBean bean) throws SQLException, Exception { String sql = "INSERT INTO disciplinas (\"idDisciplinas\",\"nome\",\"semestre\",\"cargaHoraria\",\"maxFaltas\") " + "VALUES (DEFAULT,'"+bean.getNome()+"','"+bean.getSemestre()+"','"+bean.getCargaHoraria()+"','"+bean.getMaxFaltas()+"') RETURNING \"idDisciplinas\""; PreparedStatement stmt = connDB.connect(bean).prepareStatement(sql); rs = stmt.executeQuery(); String codigo = new String(); if(rs.next()){ codigo = rs.getString("idDisciplinas"); } connDB.commit(); return codigo; }
minha bussiness:

public void cadastraDisciplina(portariaBean bean) throws Exception { if(validateDisciplina(bean) == true){ portariaDao.getInstance().cadastraDisciplina(bean); }else{ JOptionPane.showMessageDialog(null,"Há algo errado.Tente novamente!!!","Alerta",JOptionPane.ERROR_MESSAGE); } }

minha action:

public String cadastraDisciplina(String nome, String semestre, String cargaHoraria, String maxFaltas) throws Exception { portariaBean bean = new portariaBean(); bean.setNome(nome); bean.setSemestre(semestre); bean.setCargaHoraria(cargaHoraria); bean.setMaxFaltas(maxFaltas); portariaBusiness.getInstance().cadastraDisciplina(bean); return portariaDao.getInstance().cadastraDisciplina(null); }

e a minha swing:

private void cadastrarDisciplinas(java.awt.event.ActionEvent evt) { portariaAction action = new portariaAction(); String semestre = (String)(cmbSemestre.getSelectedItem()); try { String idDisciplina = action.cadastraDisciplina(txfNome.getText(),semestre,txfCargaHoraria.getText(),txfMaxFaltas.getText()); txfCodigo.setText(idDisciplina); } catch (Exception e) { e.printStackTrace(); } }

Já não sei mais o que faço, afinal quando depuro o projeto ele vai até a dao, reconhece o id, põe dentro do return codigo, mas não repassa para a business e nem para a action.
Porém, no depurador o código vai até a swing.
Alguém pode me ajudar?

6 Respostas

R

Seja bem vindo ao Guj.
Quando postar código, poste dentro das tags code, veja o exemplo: http://www.guj.com.br/java/50115-vocnovo-no-guj-vai-criar-um-tico-e-colar-seu-cigo-fonte-leia-aqui-antes-por-favor
Isso facilita a visualização do seu código.
Edite seu post e coloque o código entre tais tags.

J

não sei se tem como trazer o código que foi inserido pq se trata de um insert, uma idéia que vc pode fazer é depois de ter inserido dar um select com max para buscar o ultimo registro da tabela…

D

vc tem q fazer um SELECT para buscar o id inserido…

se for mysql vc faz um

D

Desculpem, acho q vc’s não entenderam.
O returning que está sendo usado com o insert já me retorna automaticamente o id inserido.
O que está faltando para mim é fazer o retorno até a swing.

J

Dani Gomes não sei se compreendi seu problema direito mais tenta o seguinte:

Na sua classe de Action no método cadastraDisciplina,

public String cadastraDisciplina(String nome, String semestre, String cargaHoraria, String maxFaltas) throws Exception {  
     ...  
     return portariaBusiness.getInstance().cadastraDisciplina(bean); 
}

Na sua classe de Bussiness no método cadastraDisciplina,

public String cadastraDisciplina(portariaBean bean) throws Exception { String ID = null; if(validateDisciplina(bean) == true){ ID = portariaDao.getInstance().cadastraDisciplina(bean); }else{ JOptionPane.showMessageDialog(null,"Há algo errado.Tente novamente!!!","Alerta",JOptionPane.ERROR_MESSAGE); } return ID; }

D

As vezes a gente procura uma solução tão complicada e a solução é simples.
Obrigado pela ajuda, era isto mesmo que eu estava procurando.

Criado 25 de maio de 2011
Ultima resposta 29 de mai. de 2011
Respostas 6
Participantes 5