Tratar mensagem do banco de dados para o usuario
Colegas,
tenho uma procedure que se o usuário não tiver acesso ela exibe uma exceção.
O problema é que na aplicação preciso tratar essa mensagem para o usuário, ou seja, jogar uma mensagem na tela. Podem me ajudar por favor?
MINHA PROCEDURE
MÉTODO DA CLASSE DAO
STACK TRACE COM A MENSAGEM DE ERRO
tenho uma procedure que se o usuário não tiver acesso ela exibe uma exceção.
O problema é que na aplicação preciso tratar essa mensagem para o usuário, ou seja, jogar uma mensagem na tela. Podem me ajudar por favor?
MINHA PROCEDURE
SET TERM ^ ; CREATE PROCEDURE SP_RESTRICOES ( PTABELA DM_ID, PUSUARIO DM_ID, PLOGIN DM_LOGIN, POPR DM_OPR ) AS declare variable vcount dm_inteiro; declare variable vincluir dm_opr; declare variable valterar dm_opr; declare variable vexcluir dm_opr; declare variable vvisualizar dm_opr; declare variable vimprimir dm_opr; begin -- verifica as permissões do usuario select G.INCLUIR,G.ALTERAR,EXCLUIR,G.visualizar ,G.IMPRIMIR FROM USUARIO U INNER join grupo_sub G ON G.id_grupo = U.id_grupo WHERE U.idusuario = :pusuario AND ID_TABELA = :ptabela INTO VINCLUIR,VALTERAR,VEXCLUIR,VVISUALIZAR,VIMPRIMIR; if (POPR = 'I' AND vINCLUIR = 'N') then exception error_access; ELSE if (POPR = 'U' AND vALTERAR = 'N') then exception error_access; ELSE if (POPR = 'D' AND vEXCLUIR = 'N') then exception error_access; ELSE if (POPR = 'W' AND vVISUALIZAR = 'N') then exception error_access; ELSE if (POPR = 'P' AND vIMPRIMIR = 'N') then exception error_access; end^ SET TERM ; ^
MÉTODO DA CLASSE DAO
public void addFornecedor(Fornecedor frn){
try {
String sql = "{ CALL SP_IAD_FORNECEDOR(?,?,?,?,?,?,?,?,?,?,?,?) }";
executePrepered(sql,frn.getIdforn(),frn.getNome(),frn.getEndereco(),frn.getNumero(),frn.getComplemento(),frn.getBairro(),
frn.getCidade(),frn.getInscEstadual(),frn.getTelefone(),frn.getEmail(),frn.getUsuario(),frn.getOpr());
} catch (SQLException ex) {
Logger.getLogger(FornecedorDao.class.getName()).log(Level.SEVERE, null, ex);
}
}
STACK TRACE COM A MENSAGEM DE ERRO
ERROR_ACCESS Acesso negado At procedure 'SP_RESTRICOES' line: 27, col: 44 At procedure 'SP_IAD_FORNECEDOR' line: 17, col: 5 at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.readStatusVector(AbstractJavaGDSImpl.java:2169) at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.receiveResponse(AbstractJavaGDSImpl.java:2119) at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscDsqlExecute2(AbstractJavaGDSImpl.java:1185) at org.firebirdsql.gds.impl.GDSHelper.executeStatement(GDSHelper.java:226) at org.firebirdsql.jdbc.AbstractPreparedStatement.internalExecute(AbstractPreparedStatement.java:726) at org.firebirdsql.jdbc.AbstractCallableStatement.internalExecute(AbstractCallableStatement.java:435) at org.firebirdsql.jdbc.AbstractCallableStatement.executeUpdate(AbstractCallableStatement.java:341) at treinamento.dao.GenericaDao.executePrepered(GenericaDao.java:72) at treinamento.dao.FornecedorDao.addFornecedor(FornecedorDao.java:32) at treinamento.forms.frmFornecedor.btnConfirmarActionPerformed(frmFornecedor.java:504) at treinamento.forms.frmFornecedor.access$400(frmFornecedor.java:32) at treinamento.forms.frmFornecedor$6.actionPerformed(frmFornecedor.java:347) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6289) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6054) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178) at java.awt.Dialog$1.run(Dialog.java:1046) at java.awt.Dialog$3.run(Dialog.java:1098) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:1096) at java.awt.Component.show(Component.java:1585) at java.awt.Component.setVisible(Component.java:1537) at java.awt.Window.setVisible(Window.java:842) at java.awt.Dialog.setVisible(Dialog.java:986) at treinamento.forms.frmPrincipal.jmiFornecedorActionPerformed(frmPrincipal.java:177) at treinamento.forms.frmPrincipal.access$100(frmPrincipal.java:17) at treinamento.forms.frmPrincipal$2.actionPerformed(frmPrincipal.java:100) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850) at java.awt.Component.processMouseEvent(Component.java:6289) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6054) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Nilo Souza
Curtidas 0
Respostas
Davi Costa
24/06/2011
O programa está entrando nesse catch?
Além de SQLException, trata tb Exception, mais abaixo.
Daí vc vê qual entra e trata sua aplicação.
att Davi
Além de SQLException, trata tb Exception, mais abaixo.
Daí vc vê qual entra e trata sua aplicação.
att Davi
GOSTEI 0
Nilo Souza
24/06/2011
Daria para explicar mais passo a passo.
GOSTEI 0
Davi Costa
24/06/2011
public void addFornecedor(Fornecedor frn){
try {
String sql = "{ CALL SP_IAD_FORNECEDOR(?,?,?,?,?,?,?,?,?,?,?,?) }";
executePrepered(sql,frn.getIdforn(),frn.getNome(),frn.getEndereco(),frn.getNumero(),frn.getComplemento(),frn.getBairro(),
frn.getCidade(),frn.getInscEstadual(),frn.getTelefone(),frn.getEmail(),frn.getUsuario(),frn.getOpr());
} catch (SQLException ex) {
Logger.getLogger(FornecedorDao.class.getName()).log(Level.SEVERE, null, ex);
}catch(Exception e) {
Logger.getLogger(FornecedorDao.class.getName()).log(Level.SEVERE, null, e);
}
}
Att Davi
try {
String sql = "{ CALL SP_IAD_FORNECEDOR(?,?,?,?,?,?,?,?,?,?,?,?) }";
executePrepered(sql,frn.getIdforn(),frn.getNome(),frn.getEndereco(),frn.getNumero(),frn.getComplemento(),frn.getBairro(),
frn.getCidade(),frn.getInscEstadual(),frn.getTelefone(),frn.getEmail(),frn.getUsuario(),frn.getOpr());
} catch (SQLException ex) {
Logger.getLogger(FornecedorDao.class.getName()).log(Level.SEVERE, null, ex);
}catch(Exception e) {
Logger.getLogger(FornecedorDao.class.getName()).log(Level.SEVERE, null, e);
}
}
Att Davi
GOSTEI 0
Nilo Souza
24/06/2011
Tentei colocar um joptionpane para mostrar uma mensagem amigavel, mas deu erro.
Como trato isso na aplicação. Tenho que criar alguma classe?
Como trato isso na aplicação. Tenho que criar alguma classe?
GOSTEI 0
Davi Costa
24/06/2011
POde ser uma solução interessanet a classe ou método que chamou addFornecedor e ao invés de tratar com try/catch em addFornecedor, tratar no seu chamador.
Para que isso dê certo e o código compile vc precisa declara com throws o método addFornecedor.
att Davi
Para que isso dê certo e o código compile vc precisa declara com throws o método addFornecedor.
att Davi
GOSTEI 0
Dyego Carmo
24/06/2011
REsolvido ?
Se sim , favor fechar o chamado !
Valeu !
Se sim , favor fechar o chamado !
Valeu !
GOSTEI 0
Nilo Souza
24/06/2011
não fechou, ainda preciso de ajuda,
GOSTEI 0
Davi Costa
24/06/2011
Posta a chamada do seu JOptionPane e que chama o método que eu pedir para colocar o try/catch e como está agora o addFornecedor sem try;catch
att Davi
att Davi
GOSTEI 0
Nilo Souza
24/06/2011
tentei usar o codigo acima com o cath e retornou o erro abaixo. Ainda nao entendi bem como fazer.
01/07/2011 19:18:47 treinamento.dao.FornecedorDao addFornecedor GRAVE: null org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544517. exception 1 ERROR_ACCESS Acesso negado At procedure 'SP_RESTRICOES' line: 27, col: 44 At procedure 'SP_IAD_FORNECEDOR' line: 17, col: 5 at org.firebirdsql.jdbc.AbstractPreparedStatement.internalExecute(AbstractPreparedStatement.java:730) at org.firebirdsql.jdbc.AbstractCallableStatement.internalExecute(AbstractCallableStatement.java:435) at org.firebirdsql.jdbc.AbstractCallableStatement.executeUpdate(AbstractCallableStatement.java:341) at treinamento.dao.GenericaDao.executePrepered(GenericaDao.java:72) at treinamento.dao.FornecedorDao.addFornecedor(FornecedorDao.java:33) at treinamento.forms.frmFornecedor.btnConfirmarActionPerformed(frmFornecedor.java:533) at treinamento.forms.frmFornecedor.access$400(frmFornecedor.java:35) at treinamento.forms.frmFornecedor$6.actionPerformed(frmFornecedor.java:353) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6289) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6054) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178) at java.awt.Dialog$1.run(Dialog.java:1046) at java.awt.Dialog$3.run(Dialog.java:1098) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:1096) at java.awt.Component.show(Component.java:1585) at java.awt.Component.setVisible(Component.java:1537) at java.awt.Window.setVisible(Window.java:842) at java.awt.Dialog.setVisible(Dialog.java:986) at treinamento.forms.frmPrincipal.jmiFornecedorActionPerformed(frmPrincipal.java:177) at treinamento.forms.frmPrincipal.access$100(frmPrincipal.java:17) at treinamento.forms.frmPrincipal$2.actionPerformed(frmPrincipal.java:100) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850) at java.awt.Component.processMouseEvent(Component.java:6289) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6054) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
GOSTEI 0