Olá amigos,
estou desenvolvendo um app de banco de horas,
no meu banco tenho o seguinte script:
CREATE TABLE competencia2017
id integer NOT NULL, base character varying(20) NOT NULL, janeiro character varying(20), fevereiro character varying(20), marco character varying(20), abril character varying(20), maio character varying(20), junho character varying(20), julho character varying(20), agosto character varying(20), setembro character varying(20), outubro character varying(20), novembro character varying(20), dezembro character varying(20), CONSTRAINT competencia2017_pkey PRIMARY KEY (id, base), CONSTRAINT competencia2017_id_fkey FOREIGN KEY (id) REFERENCES funcionario (matricula) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION )(
na minha aplicação tenho um método que recebe um funcionário e o mês de competencia que será a coluna da tabela a ser inseridos os dados:
public static int setHoras(Funcionario f, String mes) throws SQLException{
String ddl = "update competencia"+Controle.ano+" set ? = ? where base = '50%' and id = ?";
PreparedStatement pstdados =
AcessaBD.connection.prepareStatement(ddl, tipo, concorrencia);
pstdados.setString(1, mes);
pstdados.setString(2, f.getHoras().getHoras50());
pstdados.setLong(3, f.getMatricula());
int dados = pstdados.executeUpdate();
String ddl2 = "update competencia"+Controle.ano+"set ? = ? where base = '100%' and id = ?";
PreparedStatement pstdados2 =
AcessaBD.connection.prepareStatement(ddl, tipo, concorrencia);
pstdados2.setString(1, mes);
pstdados2.setString(2, f.getHoras().getHoras50());
pstdados2.setLong(3, f.getMatricula());
return dados;
}
(Obs: a Concatenação Competencia+Controle.ano é para dar o nome a tabela que será criada a cada novo ano, ou seja “Competencia2017, Competencia2018” etc etc.
pois bem, no preparedStatement acima não está inserindo nada no banco de dados e me trazendo o seguinte erro:
Exception in thread "main" org.postgresql.util.PSQLException: ERRO: erro de sintaxe em ou próximo a "$1"
Posição: 28 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:334) at Util.AcessaBD.setHoras(AcessaBD.java:321) at Control.Controle.main(Controle.java:68) C:\Users\johnny\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 FALHA NA CONSTRUÇÃO (tempo total: 3 segundos)
Ja revi varias vezes o código e até materiais sobre JDBC mas aparentemente minha sintaxe ta correta, sql também parece ok,
alguém pode me dar uma sugestão ?
Desde já grato