Tratar mensagem do banco de dados para o usuario

Java

24/06/2011

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
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

Nilo Souza

Curtidas 0

Respostas

Davi Costa

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
GOSTEI 0
Nilo Souza

Nilo Souza

24/06/2011

Daria para explicar mais passo a passo.
GOSTEI 0
Davi Costa

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
GOSTEI 0
Nilo Souza

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?
GOSTEI 0
Davi Costa

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

GOSTEI 0
Dyego Carmo

Dyego Carmo

24/06/2011

REsolvido ?

Se sim , favor fechar o chamado !

Valeu !
GOSTEI 0
Nilo Souza

Nilo Souza

24/06/2011

não fechou, ainda preciso de ajuda,
GOSTEI 0
Davi Costa

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
GOSTEI 0
Nilo Souza

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
POSTAR