gpt4 book ai didi

java - 为什么我尝试执行此 JDBC 查询时得到此 "SQLSyntaxErrorException: ORA-00933: SQL command not properly ended"?

转载 作者:搜寻专家 更新时间:2023-11-01 01:06:06 24 4
gpt4 key购买 nike

我在尝试将简单的 JDBC 查询实现到 Java 应用程序中时遇到了一些问题。

所以我有以下查询:

SELECT   D.*
FROM coda_tx c, documenti_tx d
WHERE C.FK_TIPO_DOC = 99
AND C.FK_STATO = 1
AND C.FK_PIVA_MITTENTE = '05779711000'
AND C.PK_CODA = D.PFK_CODA
AND C.CANALE='STA'

如果我在 Oracle SQL Developer 中运行它,它运行良好,结果我获得了 2 条记录。

所以我必须将这个查询实现到我的应用程序的 DAO 类中,我在其中定义了以下方法:

public void getListaFatturePDF(String partitaIva) {
System.out.println("INTO ottieniListaFatturePDF()");

Blob blobPdf;
String sql;

StringBuffer sb = new StringBuffer();
sb.append("SELECT D.*");
sb.append("FROM coda_tx c, documenti_tx d");
sb.append("WHERE C.FK_TIPO_DOC = 99");
sb.append("AND C.FK_STATO = 1");
sb.append("AND C.PK_CODA = D.PFK_CODA");
sb.append("AND C.CANALE='STA'");
sb.append("AND C.FK_PIVA_MITTENTE = '");
sb.append(partitaIva);
sb.append("';");

sql = sb.toString();

try {
statment = connection.createStatement();
ResultSet rs = statment.executeQuery(sql);
System.out.println("ResultSet obtained");
} catch (SQLException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}

}

问题是当我尝试执行之前的方法时抛出以下SQLException:

java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:762)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1309)
at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:422)
at DAO.FatturaDAO.getListaFatturePDF(FatturaDAO.java:43)
at mainPkg.Main.main(Main.java:74)

为什么?我认为这可能是 SQL 语法中的错误,但我不确定(因为如果我对 Oracle SQL Developer 执行查询,它工作正常)我错过了什么?我该如何解决?

谢谢

最佳答案

executeQuery() 在执行语句时自动将分号添加到语句中。

sb.append("';"); 行更改为 sb.append("'");

此外,您还需要在每行的末尾或开头添加空格,否则您的陈述无效。

关于java - 为什么我尝试执行此 JDBC 查询时得到此 "SQLSyntaxErrorException: ORA-00933: SQL command not properly ended"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com