NullPointerException em Cadastro Postgresql

Boa tarde pessoal

Estou tentando fazer um cadastro usando java no postgresql. Porém está dando a seguinte msg:

Caused by: java.lang.NullPointerException

o que acontece é que a linha que dá esse erro é essa:

cst = conect.con.prepareCall("INSERT INTO dbsinan.tb_notificacao(nu_notificacao,dt_notificacao) values(?,?);

Já fiz debug e os dados nu_notificação e dt_notificação está chegando corretamente dessa forma:

cst.setString(1, f.getNu_notificacao());
cst.setDate(2, new java.sql.Date(f.getDt_notificacao().getTime()));

Segue abaixo a conexão com DB:

try {
            Class.forName("org.postgresql.Driver");
            conPostgres = DriverManager.getConnection("jdbc:postgresql://10.8.0.105:5445/sinanpop51", "postgres", "");
//            con = DriverManager.getConnection("jdbc:postgresql://192.168.1.19:5445/sinanpop51", "postgres", "");
            System.out.println("SINOMP - Postgresql ConnectON: " + conPostgres);
        } . . .

faça um debug do seu código e veja se os valores que você está tentando salvar realmente estão nas variáveis.
java.lang.NullPointerException

este erro acontece quando não tem conteúdo nas variáveis ou o retorno de alguma função é nulo quando deveria retornar algo

Pois já fiz. E todos estão chegando corretamente.

Me parece ser algo no SQL. Muito estranho, não mexi e semana passada estava cadastrando.

já verificou se sua aplicação realmente está conectada ao banco de dados?

não seria

cst = conect.con.prepareStatement("INSERT INTO dbsinan.tb_notificacao(nu_notificacao,dt_notificacao) values(?,?)");

prepareCall é para executar Stored Procedure (SP)

Faz sentido. tente conect.con.preparedStatement("…");

Segue a resposta na hora da conexão: org.postgresql.jdbc4.Jdbc4Connection@44e91c07

Vou testar usando java.sql.PreparedStatement

né mesmo… e concordo com vc verifique qual o retorno do seu DriverManager ele pode dar dando nullpointer e vc num estar percebendo

Certo. Vou testar e posto aqui o resultado

obrigado pela ajuda de vcs

Bahhh… Mesma coisa.

Segue a msg de erro:

Postgresql ConnectON: org.postgresql.jdbc4.Jdbc4Connection@34ec2c16
Postgresql ConnectON: org.postgresql.jdbc4.Jdbc4Connection@231acef3
Erro postgresql: java.lang.NullPointerException
Exception in thread "Thread-8" java.lang.NullPointerException
	at sinomp.cadastros.PgTbNotificacao.run(PgTbNotificacao.java:35)
ConnectON: com.mysql.jdbc.JDBC4Connection@34659228
ConnectON: com.mysql.jdbc.JDBC4Connection@339c6c67
ConnectOFF: com.mysql.jdbc.JDBC4Connection@339c6c67
	at java.lang.Thread.run(Thread.java:748)

pergunto:

Será que tem a ver com a classe de cadastro estar dentro de uma Thread?

Estou chamando assim:

public boolean threadAdd(ClassNotificacao f) {
        
        new Thread(new PgTbNotificacao(f)).start();

        new Thread(new PgTbViolDom(f)).start();

        return true;
    }

E aqui a classe Implements Runnable

public class PgTbNotificacao implements Serializable, Runnable {

    private PreparedStatement cst;
    private final ConexaoDB conect = new ConexaoDB();
    private final SinanNotificacao f;

    public PgTbNotificacao(SinanNotificacao f) {
        this.f = f;
    }

    @Override
    public void run() {
        try {
            conect.openPostgreSql();
            cst = conect.con.prepareStatement("INSERT INTO dbsinan.tb_notificacao("
                    + "nu_notificacao,"
                    + "dt_notificacao) "
                    + "VALUES(?,?)");
            cst.setString(1, f.getNu_notificacao());
            cst.setDate(2, new java.sql.Date(f.getDt_notificacao().getTime()));

            cst.execute();
            cst.close();
            conect.closePostgreSql();
        } catch (SQLException e) {
            System.err.println("erro postgres: " + e);
        }
    }
}

interessante é que a mensagem que você adicionou no catch não está aparecendo. “erro postgres:” deveria aparecer caso ocorresse algum erro na inserção

Pois é. No DEBUG ele para exatamente na linha: cst = conect.con.prepareStatement("INSERT INT....

To achando que é erro de conexão com DB.

ao envés de fazer uma inserção, tente fazer uma consulta e faz o debug pra ver se é retornado alguma coisa. se não der erro, iremos saber que o erro está na inserção. se der erro, verifica tua conexão e o jar do banco de dados pq provavelmente ele não estará conectando

Boa… Vou testar

valeu

Mesmo erro com um SELECT.

Então é erro de conexão mesmo. O DB não está abrindo.

Valeu pessoal vou trabalhar agora pra descobrir qual o problema…

posto aqui daqui a pouco.

Valeu

Você está instanciando a classe de conexão e chamando o método de conectar logo em seguida, certo?

Aqui não seria conect.con().prepareStatement ?

To usando essa versão de PostgreSQL: 9.0 (x86)

e no Maven:

    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.1-901.jdbc4</version>
    </dependency>

tenho certeza q é conexão…posta sua classe de conexão…