2014-10-30 2 views
0

Кажется, что этот вопрос был избит до смерти, но я не могу найти решение для своей ситуации. В Oracle SQL Developer я написал следующий запрос, и я знаю, что он синтаксически корректен (или он как минимум извлекает нужные мне данные).JDBC - Преобразование строки SQL для удовлетворения Java

select QUERY.SETID, COUNT(QUERY.GENEID) 
from QUERY, G2 
where QUERY.GENEID = G2.GENEID group by QUERY.SETID 
order BY COUNT(QUERY.GENEID) DESC; 

Я перевел его на свою программу на 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;"; 

Теперь из многих вопросов, которые я читал, «порядок BY» команды, как правило, порождают проблемы, поэтому я попытался удалить, что вся четвёртая линия читать, как это.

String query = "select QUERY.SETID, COUNT QUERY.GENEID" 
         + "from QUERY, G2" 
         + "where QUERY.GENEID = G2.GENEID group by QUERY.SETID;"; 

Но я все еще получаю ключевое слово FROM, не найденное там, где ожидаемая ошибка. Я был бы признателен за любую помощь или указал бы на другие вопросы, которые могут помочь. Благодарю.

EDIT: Это код ошибки я получаю

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) 
+0

Между вашими линиями нет промежутков времени! Когда строки конкатенированы, все идет не так! –

ответ

2

Кажется, ваша проблема из-за отсутствие пробелов между ключевыми словами 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"; 
+0

Я изменил свой SQL-запрос дословно, и я все равно получаю ту же ошибку. – AndrewD

+0

Включенная ошибка в обновленном вопросе – AndrewD

+0

Я также заметил, что вы изменили часть 'COUNT' ... – manouti

Смежные вопросы