Error Connection Database; "Relation does not exist"

4

I'm having trouble saving data from a screen to my database I'm getting the following error:

  

"org.postgresql.util.PSQL.Exception: ERROR: column" name "of relation" product_name "does not exist position: 29"

heading 29 and the following:

pst = conex.com.prepareStatement("insert into cadastroproduto(nome, Preco_De_Custo,Preco_De_Venda,Marca,Categoria,Origem,Unidade_Medida) values(?,?,?,?,?,?,?)");

The code I am using for the control that is giving error and the following:

package controle;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import modelo.ModeloCadastroProduto;

public class ControleCadastroProduto {
ConexaoBD conex = new ConexaoBD();
ModeloCadastroProduto mod;

public class ControleCadastroProduto {
    ConexaoBD conex = new ConexaoBD();
    ModeloCadastroProduto mod;

    public ControleCadastroProduto() {
        this.mod = new ModeloCadastroProduto();
    }

    public void Salvar(ModeloCadastroProduto mod){
        conex.conexao();
        try {
            PreparedStatement pst;
            pst = conex.com.prepareStatement("insert into cadastroproduto(nome, Preco_De_Custo,Preco_De_Venda,Marca,Categoria,Origem,Unidade_Medida) values(?,?,?,?,?,?,?)");
            pst.setString(1,mod.getNome());
            pst.setDouble(2,mod.getPrecodecusto());
            pst.setDouble(3,mod.getPrecodevenda());
            pst.setString(4,mod.getMarca());
            pst.setString(5,mod.getCategoria());
            pst.setString(6,mod.getOrigem());
            pst.setString(7,mod.getUnidademedida());
            pst.execute();
            JOptionPane.showMessageDialog(null,"Dados Cadastrados com Sucesso!");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Erro Ao Cadastrar\nErro: "+ex);
        }

        conex.desconecta();
    }
}

Table code:

CREATE TABLE public.cadastroproduto
(
    "ID_Produto" integer NOT NULL DEFAULT nextval('"CadastroProduto_ID_Produto_seq"'::regclass),
    "Nome" character(1) COLLATE pg_catalog."default" NOT NULL,
    "Preco_De_Custo" money NOT NULL,
    "Preco_De_Venda" money,
    "Marca" character varying(60) COLLATE pg_catalog."default",
    "Categoria" character varying(60) COLLATE pg_catalog."default",
    "Origem" character varying COLLATE pg_catalog."default",
    "Unidade_Medida" character varying COLLATE pg_catalog."default",
    CONSTRAINT "CadastroProduto_pkey" PRIMARY KEY ("ID_Produto")
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

ALTER TABLE public.cadastroproduto
    OWNER to postgres;
    
asked by anonymous 21.12.2016 / 19:50

1 answer

0
  

column "name" of relation "cadastroproduto"

Names of identifiers (tables, field etc.) with capital letters or special characters in PostgreSQL should be enclosed in quotation marks, otherwise they will not be recognized.

Change:

insert into cadastroproduto(nome, Preco_De_Custo)

To: apply this to all fields that have capital letters.

pst = conex.com.prepareStatement("insert into cadastroproduto(nome, \"Preco_De_Custo\", \"Preco_De_Venda\", \"Marca\", \"Categoria\", \"Origem\",\"Unidade_Medida\") 

If possible, it is better to change the column names and leave everything in the box, thus avoiding the escape.

    
21.12.2016 / 20:24