Java 如何解决PostgreSQL JDBC org.PostgreSQL.util.PSQLException错误:

Java 如何解决PostgreSQL JDBC org.PostgreSQL.util.PSQLException错误:,java,sql,postgresql,jdbc,Java,Sql,Postgresql,Jdbc,我对PostgreSQL JDBC有问题 我使用postgresql-9和Glassfish如果我使用pgAdmin执行查询,我没有任何错误,但在我的应用程序中,我有以下错误: 严重:org.postgresql.util.PSQLException:ERREUR:ERREUR de syntax sur ou près de«d» 职位:293 位于org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponseQueryExecuto

我对PostgreSQL JDBC有问题

我使用postgresql-9和Glassfish如果我使用pgAdmin执行查询,我没有任何错误,但在我的应用程序中,我有以下错误:

严重:org.postgresql.util.PSQLException:ERREUR:ERREUR de syntax sur ou près de«d» 职位:293 位于org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponseQueryExecutorImpl.java:2103 位于org.postgresql.core.v3.QueryExecutorImpl.processResultsQueryExecutorImpl.java:1836 位于org.postgresql.core.v3.QueryExecutorImpl.executeQueryExecutorImpl.java:257 位于org.postgresql.jdbc2.AbstractJdbc2Statement.executeAstractjdbc2statement.java:512 位于org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlagsStratjdbc2statement.java:388 位于org.postgresql.jdbc2.AbstractJdbc2Statement.executeQueryAbstractJdbc2Statement.java:273

这是我的java代码

PreparedStatement st = con.prepareStatement("SELECT d.refdossier, d.status, d.date_validation, d.date_last_update,"
                        + "d.id_dossier,d.contrat_signe, d.etat_avancement,c.nom_pre_cont, c.num_piece_id,  c.date_piece_id,"
                        + "c.lieu_piece_id,  c.dat_nai_con, c.tel_con, fax_con,  c.email_con,g.libellegouvernoratar ,del.libelledelegationar"
                        + "FROM dossier d JOIN contact c on c.id_contact=d.id_dossier JOIN gouvernorat "
                        + " g on g.codegouvernorat=c.gouv JOIN delegation del on del.codedelegation=c.delegation"
                        + " WHERE d.id_dossier="+84);

res = st.executeQuery();

del.libelledegatior和FROM之间缺少一个空格。这导致查询被解析为:

SELECT ...., del.libelledelegationarFROM dossier d ....

换句话说,它会看到一列del.libelledelegationfrom和alias dossier,当解析器看到d时,它会跳闸,因为它需要a或FROM,因此它会返回一个错误,即在d附近有语法错误。

在del.libelledelegationar和FROM之间缺少一个空格。这导致查询被解析为:

SELECT ...., del.libelledelegationarFROM dossier d ....

换句话说,它会看到一个列del.libelledegationarfrom和alias dossier,当解析器看到d时,它会跳闸,因为它需要a或FROM,所以它会返回一个错误,即d附近有语法错误。

我建议您打印连接的字符串以进行调试,以确保查询语法正确。另一方面,查询中似乎缺少了一个空格。我建议您打印连接的字符串以进行调试,以确保查询语法正确。另一方面,在查询中似乎缺少一个空格。