JDBC-转换SQL字符串以满足Java

JDBC-转换SQL字符串以满足Java,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,这个问题似乎被打得要死,但我找不到解决我的问题的办法。在OracleSQLDeveloper中,我编写了以下查询,我知道它在语法上是正确的(或者它至少检索我需要的数据) 我把它翻译成我的Java程序,如图所示 String query = "select QUERY.SETID, COUNT QUERY.GENEID" + "from QUERY, G2" + "where QUERY.GENEID

这个问题似乎被打得要死,但我找不到解决我的问题的办法。在OracleSQLDeveloper中,我编写了以下查询,我知道它在语法上是正确的(或者它至少检索我需要的数据)

我把它翻译成我的Java程序,如图所示

String query = "select QUERY.SETID, COUNT QUERY.GENEID"
                        + "from QUERY, G2"
                        + "where QUERY.GENEID = G2.GENEID group by QUERY.SETID "
                        + "order BY COUNT QUERY.GENEID DESC;";
从我读到的许多问题来看,“orderby”命令往往会产生问题,所以我试着删除整个第四行,这样读

String query = "select QUERY.SETID, COUNT QUERY.GENEID"
                        + "from QUERY, G2"
                        + "where QUERY.GENEID = G2.GENEID group by QUERY.SETID;";
但我仍然收到一个FROM关键字not found where预期错误。如果您能提供帮助或提出其他问题,我将不胜感激。谢谢

编辑:这是我收到的错误代码

Oct 30, 2014 4:36:02 PM Main main
SEVERE: null
java.sql.SQLSyntaxErrorException: ORA-00923: FROM keyword not found where expected

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:194)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:853)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1145)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1267)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1469)
at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:389)
at Main.main(Main.java:37)

您的问题似乎是由于SQL关键字之间缺少空格造成的。还有
ORDER BY
子句和不需要的分号

String query = "select QUERY.SETID, COUNT(QUERY.GENEID) as CT "
                    + "from QUERY, G2 "
                    + "where QUERY.GENEID = G2.GENEID group by QUERY.SETID "
                    + "order BY CT DESC";

我将我的sql语句逐字更改为您的sql语句,但仍然收到相同的错误。我尝试过使用计数部分和不使用计数部分,但仍然收到相同的错误。我更愿意把它放在那里,但是没有它也可以工作。请更正ORDER BY子句和不需要的分号。行之间没有空格!串接字符串时,一切都会出错!
String query = "select QUERY.SETID, COUNT(QUERY.GENEID) as CT "
                    + "from QUERY, G2 "
                    + "where QUERY.GENEID = G2.GENEID group by QUERY.SETID "
                    + "order BY CT DESC";