Erro ao executar Insert no Postgres

Fala galera,
estou com um problema que está me deixando doido, estou desenvolvendo um cadastro simples de contados via RMI, até ai blz
o cliente transfere o objeto certinho para o servidor RMI
o problema está na hora de inserir os dados no banco de dados, Postgres
apresenta o seguinte erro:
org.postgresql.util.PSQLException: ERROR: relation “tabcontatos” does not exist
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1608)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1343)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:194)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:343)
at Persistencia.PostgresSQL.cadastrarContato(PostgresSQL.java:51)
at pacotermi.ContatoImpl.cadastroContato(ContatoImpl.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)

já tentei de tudo (ou quase tudo), já reinstalei o postgres, troquei de banco, tabela e tudo mais :roll:
o código da minha classe de persistencia é o seguinte:

package Persistencia;

import ObjContato.ObjContato;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class PostgresSQL {

    private String driver = "org.postgresql.Driver";
    private String user = "postgres";
    private String senha = "cheristonexd";
    private String url = "jdbc:postgresql://localhost:5432/postgres";
    private String sqlComand = null;
    private Connection con = null;
    private ResultSet resultSet = null;
    private PreparedStatement statement = null;

    private Connection conectarBanco() throws SQLException {
        try {
            Class.forName(driver);
            con = (Connection) DriverManager.getConnection(url, user, senha);
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } catch (SQLException sqlEx) {
            sqlEx.printStackTrace();
        }
        return con;
    }

    private void fecharConexaoBanco() {
        try {
            statement.close();
            con.close();
        } catch (SQLException sqlEx) {
            sqlEx.printStackTrace();
        }
    }

    public void cadastrarContato(ObjContato objContato) throws SQLException {
        try {
            sqlComand = "INSERT INTO tabContatos(codigoContato, nomeContato," +
                    "telefoneContato, emailContato) VALUES (?,?,?,?)";
            statement = conectarBanco().prepareStatement(sqlComand);//ABRE CONEXAO COM O BANCO DE DADOS
            statement.setString(1, Integer.toString(objContato.getCodContato()));
            statement.setString(2, objContato.getNomeContato());
            statement.setString(3, objContato.getTelefone());
            statement.setString(4, objContato.getEmail());
            statement.executeUpdate();
        } catch (SQLException sqlEx) {
            sqlEx.printStackTrace();
        } finally {
            fecharConexaoBanco();//FECHA CONEXAO COM O BANCO DE DADOS
        }
    }
}

aguardo ajuda :smiley:

Tenta trocar a linha 47:

statement.setString(1, Integer.toString(objContato.getCodContato()));  

por esta:

statement.setInt(1, objContato.getCodContato()); 

No mais o erro pode ser alguma coisa na estrutura da tabela tabcontatos.

Espero ter ajudado.

[quote=SlashJava]Tenta trocar a linha 47:

statement.setString(1, Integer.toString(objContato.getCodContato()));  

por esta:

statement.setInt(1, objContato.getCodContato()); 

No mais o erro pode ser alguma coisa na estrutura da tabela tabcontatos.

Espero ter ajudado.
[/quote]

tem que haver esta conversão de tipos pois no meu objeto o getCodContato retorno um tipo inteiro
e se tirar a conversao da erro
:frowning:

Bom dia,

A mensagem esta dizendo que a tabela não existe, possivelmente ela foi criada utlizando “” e ai o postgres fica case sensitive.
Utilize o cliente que vem junto com o postgres para verificar a forma como ele registrou a tabela no seu banco de dados.

Esse cliente é o psql que fica na pasta bin se não estou enganado, e voce pode utiliza-lo da seguinte forma:

para conectar
psql -U <usuario> -h <ip do servidor> <database>

Agora se vc nao gosta de linha de comando pode baixar o pgAdmin que é um cliente gráfico para o postgres…

Mais um detalhes, vc tem certeza que vc criou a sua tabela no banco de dados postgres, as vezes vc pode ter criado sua tabela no banco de dados template1 que é automaticamente criado na instalação do postgres

Att

Seguinte, voce criou esta tabela na base postgres ?

private String url = "jdbc:postgresql://localhost:5432/postgres";   

normalmente a url aponta para sua base

private String url = "jdbc:postgresql://localhost:5432/nomeDaSuaBase";   

Boas,
Jovem o erro se refere ao nome da tabela.
Verifique atentamente, pois dependendo da forma que criar os objetos em seu banco de dados, eles se tornam case-sensitive.

Ex:

create table "tabContatos"(
 coluna...
)

create table tabcontatos(
 coluna...
)

o mesmo tratamento deve ser levado em consideração para as colunas da tabela.

[quote=robinsonbsilva]Boas,
Jovem o erro se refere ao nome da tabela.
Verifique atentamente, pois dependendo da forma que criar os objetos em seu banco de dados, eles se tornam case-sensitive.

Ex:

create table "tabContatos"(
 coluna...
)

create table tabcontatos(
 coluna...
)

o mesmo tratamento deve ser levado em consideração para as colunas da tabela.
[/quote]

vlw ai galera
a tabela foi criada com “” mesmo, retirei as “” e funcionou perfeitamente
:smiley:

Russin

Estou com o mesmo problema que vc…

Como assim tirou as “” e funcionou perfeitamente?
Pode explicar melhor?

Grato
Alan

alan.vribeiro

deletei a tabela e cria novamente, mas ao invés de especificar o nome da tabela com “” especifiquei sem elas.
ex.:
de

create table "tabContatos"(  
coluna...  
)  

por

create table tabcontatos(  
coluna...  
)

att