Erro prepareStatement

12 respostas
rocha
Pessoal tenho a seguinte classe para conexao:
public class Conexao{
    private Connection conexao;
    public Conexao(){
        try{
            Class.forName("org.firebirdsql.jdbc.FBDriver");
                        conexao = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:D:\Sistemas\Gestor\bd\GESTORBD", "GESTOR", "msolutec0702");
	}catch ( Exception e ) {
            String erro = e.getMessage();
	}
    }

    public Connection getConexao(){
	return conexao;
    }
}
e o seguinte DAO:
1 /*
 2 * EmpresaDao.java
 3 *
 4 * Created on 22 de Abril de 2005, 13:33
 5 */
 6
 7 package br.com.solutec.gestor.dao.empresa;
 8
 9 import br.com.solutec.gestor.dao.comum.Conexao;
 10 import br.com.solutec.gestor.dao.comum.Id;
 11 import br.com.solutec.gestor.model.empresa.Empresa;
 12 import java.sql.Connection;
 13 import java.sql.PreparedStatement;
 14 import java.sql.ResultSet;
 15 import java.sql.Statement;
 16 import java.util.ArrayList;
 17 import java.util.List;
 18
 19 /**
 20 *
 21 * @author Rodrigo Rocha
 22 */
 23 public class EmpresaDao {
 24    private static Conexao cx = new Conexao();
 25    private static Connection conexao = cx.getConexao(); 
 26     /** Creates a new instance of EmpresaDao */
 27     public EmpresaDao() {
 28     }
 29    
 30     public Integer gerarId() throws Exception { 
 31         Id id = new Id(); 
 32         return id.gerarId("tbEmpresa", "idEmpresa");
 33     }
 34     
 35     public void cadastrar(Empresa em) throws Exception { 
 36         
 37         if( em == null ) return;
 38         //Statement st = conexao.createStatement();
 39         PreparedStatement ps = null;
 40         try {
 41              String sql = "INSERT INTO tbEmpresa ( idEmpresa,  rzsocial,  apelido,  dtVencimento) VALUES (?,?,?,?)";
 42            ps = conexao.prepareStatement(sql);
 43            ps.setInt(1, em.getIdEmpresa().intValue());
 44            ps.setString(2, em.getRzSocial());
 45            ps.setString(3, em.getApelido());
 46            ps.setString(4, em.getDtVencimento());
 47            ps.execute();
 48        } finally {
 49            if(ps!=null) try {ps.close(); } catch( Exception e ) {}
 50            if(ps!=null) try {conexao.close(); } catch( Exception e ) {}
 51        }
 52    }
 53    
 54 }
Qdo tento executar me apresenta uma exceção:
java.lang.NullPointerException
testeEventos
    at br.com.solutec.gestor.dao.empresa.EmpresaDao.cadastrar(EmpresaDao.java:42)
    at br.com.solutec.gestor.negocio.empresa.NegocioEmpresa.Salvar(NegocioEmpresa.java:26)
    at br.com.solutec.gestor.gui.controle.empresa.EventosEmpresaButtons.salvar(EventosEmpresaButtons.java:35)
    at br.com.solutec.gestor.gui.components.StoolBar.btSalvarClick(StoolBar.java:126)
    at br.com.solutec.gestor.gui.components.StoolBar.access$100(StoolBar.java:13)
    at br.com.solutec.gestor.gui.components.StoolBar$2.actionPerformed(StoolBar.java:56)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
    at java.awt.Component.processMouseEvent(Component.java:5100)
    at java.awt.Component.processEvent(Component.java:4897)
    at java.awt.Container.processEvent(Container.java:1569)
    at java.awt.Component.dispatchEventImpl(Component.java:3615)
    at java.awt.Container.dispatchEventImpl(Container.java:1627)
    at java.awt.Component.dispatchEvent(Component.java:3477)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
    at java.awt.Container.dispatchEventImpl(Container.java:1613)
    at java.awt.Window.dispatchEventImpl(Window.java:1606)
Falha Negocio!!!
    at java.awt.Component.dispatchEvent(Component.java:3477)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

12 Respostas

jgbt
at br.com.solutec.gestor.dao.empresa.EmpresaDao.cadastrar(EmpresaDao.java:42)

provavelmente sua conexão ta nula.
de uma olhada nisso, teste o valor da conexão antes de usa-la, so p/ ver.

[]'s

rocha

Cara era realmente isso eu não tinha setado o driver do firebird na minha aplicação:

Só q agora me aprece o seguinte erro:

testeEventos

org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544569. Dynamic SQL Error

SQL error code = -204

Table unknown

TBEMPRESA

At line 1, column 13.

at org.firebirdsql.jdbc.AbstractPreparedStatement.<init>(AbstractPreparedStatement.java:91)

at org.firebirdsql.jdbc.FBPreparedStatement.<init>(FBPreparedStatement.java:34)

at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:682)

at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:232)

at br.com.solutec.gestor.dao.empresa.EmpresaDao.cadastrar(EmpresaDao.java:41)

at br.com.solutec.gestor.negocio.empresa.NegocioEmpresa.Salvar(NegocioEmpresa.java:26)

Já verifiquei o nome da minha tabela é realmente tbEmpresa

rocha

fiz o teste com outra tabela o mesmo erro ele não encontra a tabela

jgbt

primeiro: verifique se seu usuario tem permissão para acessar esses objetos do banco.
segundo: tenha certeza que que o nome databela é esse mesmo. tipo o padrão em bd’s é usar underscore. sera que não é TB_EMPRESA?

[]'s

rocha

já fiz o teste de usuario e ok

e o nome da tabela é tbEmpresa mesmo.

Eu tb trofquei o método cadastrar por este:
public void cadastrar(Empresa em) throws Exception { 
        try {
            Statement st = conexao.createStatement();
            String sql;
            
            sql = " INSERT INTO TBEMPRESA (IDEMPRESA, RZSOCIAL, APELIDO, DTVENCIMENTO) VALUES ("+em.getIdEmpresa().intValue() + "','"+ em.getRzSocial() + "', 
'"+ em.getApelido() + "', '"+ em.getDtVencimento() +"') ";
		st.executeUpdate(sql);
                st.close();
            }
            catch ( Exception e ){
		System.out.println(e.getMessage());
            }		
		
    }

Dai o erro foi esse:

GDS Exception. 335544569. Dynamic SQL Error
SQL error code = -104
Unexpected end of command

jgbt

nunca usei firebird, mas não pode ser problema de maiusculas/minusculas?

[]'s

rocha

já tentei tanto de um jeito como de outro

E

Table unknown TBEMPRESA

Você disse tbEmpresa, nao seria apenas o “tb” em minúsculo?

rocha
Segue meu código novamente:
public void cadastrar(Empresa em) throws Exception { 
        
        if( em == null ) return;
        PreparedStatement ps = null;
        try {
            String sql = "INSERT INTO tbEmpresa (idEmpresa, rzsocial, apelido, dtVencimento) VALUES (?,?,?,?)";
            ps = conexao.prepareStatement(sql);
            ps.setInt(1, em.getIdEmpresa().intValue());
            ps.setString(2, em.getRzSocial());
            ps.setString(3, em.getApelido());
            ps.setString(4, em.getDtVencimento());
            ps.execute();
        } finally {
            if(ps!=null) try {ps.close(); } catch( Exception e ) {}
            if(ps!=null) try {conexao.close(); } catch( Exception e ) {}
        }
    }

Como vcs podem ver estou colando em minisculo no stack q aparece em maiusculo não sei pq

Rafael_Steil

Um detalhe: voce deve usar

ps.executeUpdate();

e nao ps.execute() para insert / update /delete

Rafael

rocha

blz… mas não resolve o problema vc tem alguma dica!!!

rubinelli

O Java parece legal, tudo indica um problema com o SQL. Você tentou passar o schema em que essa tabela foi criada? Tipo “INSERT into MEUSCHEMA.TBEMPRESA…”

Criado 26 de abril de 2005
Ultima resposta 26 de abr. de 2005
Respostas 12
Participantes 5