Tirar SQLCODE de uma Exception [RESOLVIDO]

2 respostas
L

Pessoal desculpe a pergunta, um pouco batida esto procurando aqui, porem se alguem puder me adiantar alguma coisa eu to precisando pegar o SQLCODE de uma Exception porem em não é no DAO.
Como estou tentando fazer…

public void saveOrUpdate(Object objeto) throws Exception {

		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			transacao = sessao.beginTransaction();

			sessao.saveOrUpdate(objeto);
			transacao.commit();

		} catch (Exception e) {
			transacao.rollback();
			throw e;
		} finally {
			sessao.close();
		}
	}

depois da na classe que chamo…

public void incluir(Object pObjeto) throws Exception {
		pCentroDeCusto = (CentroDeCustoTO) pObjeto;
		try {
			validaInputBanco(pCentroDeCusto);
			centroDeCustoDAO.saveOrUpdate(pCentroDeCusto);
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, e.getErrorCode());
// tentando pegar aqui a Exception
		} catch (BeanException e) {
			throw e;
		} catch (Exception e) {
			throw new Exception(MensagensFactory.erroSalvar);
		}
	}

Porem não vem uma SQLException, estou tentando utilizar isto em… tenho no banco uma coluna que é @Column(name = “nome”, nullable = false, length = 4, unique = true)
porem para inserir tenho que ir no banco e verificar se existe, se não existir insiro porem eu quero mandar para o banco se saber se o erro dado foi campo já existente.
A todos muito obrigado!

2 Respostas

ramos

Boa noite!

Acho que o problema é que no método da sua DAO você está fazendo throws Exception.

Pra você pegar como SQLException no catch, você precisa mudar a assinatura do método da sua DAO para:

public void saveOrUpdate(Object objeto) throws Exception, SQLException {

Espero ter ajudado.

[]s

L

Resolvido!

public void incluir(Object pObjeto) throws Exception {
		pCentroDeCusto = (CentroDeCustoTO) pObjeto;
		try {
			validaInputBanco(pCentroDeCusto);
			centroDeCustoDAO.saveOrUpdate(pCentroDeCusto);
		} catch (BeanException e) {
			throw e;
		} catch (Exception e) {
			if (e.getCause() instanceof SQLException) {
				SQLException erroSQL = (SQLException) e.getCause();
				JOptionPane.showMessageDialog(null, erroSQL.getErrorCode());
			} else {
				throw new Exception(MensagensFactory.erroSalvar);
			}
		}
	}
Criado 20 de julho de 2011
Ultima resposta 21 de jul. de 2011
Respostas 2
Participantes 2