2016-08-09 7 views
0

Я пытаюсь подключиться к базе данных оракула и получить некоторые записи.Неверная команда командной строки - Java

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.Statement; 

public class ConnectionTest { 

    static final String DB_URL = "jdbc:oracle:thin:@//connctionString"; 
    static final String USER = "usr"; 
    static final String PASS = "pwd"; 



    public static void main(String[] args) { 

     Connection conn = null; 
     Statement stmt = null; 
     try 
     { 
      System.out.println("Connecting"); 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      conn = DriverManager.getConnection(DB_URL,USER,PASS); 
      System.out.println("Connected"); 


      String queryPtyRole = "select * from emp;"; 

      System.out.println(conn); 
      stmt = conn.createStatement(); 
      ResultSet rs = stmt.executeQuery(queryPtyRole); 

      while (rs.next()) { 
       String emp_id = rs.getString("emp_id"); 
       System.out.println("emp_id: " + emp_id); 
      } 

     } 
     catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Подключение к базе данных происходит должным образом, но это дает следующую трассировку стека:

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

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) 
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) 
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743) 
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207) 
    at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:790) 
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1038) 
    at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:830) 
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1133) 
    at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1273) 
    at testPackage.ConnectionTest.main(ConnectionTest.java:38) 

EDIT

Теперь, если изменить запрос:

String queryPtyRole = "select emp_id from emp where address_id in (select address_id from add where state_id in (1,2,3))"; 

он снова дает ту же ошибку.

+2

Просто удалите точку с запятой из вашего запроса. Следуйте ниже: http://stackoverflow.com/questions/28544688/why-i-obtain-this-sqlsyntaxerrorexception-ora-00933-sql-command-not-properly –

+1

Пожалуйста, исправьте первую ошибку - «точка с запятой» (как упомянутый в одном из ответов), поскольку он вводит в заблуждение. Повторите свой вопрос для второй проблемы. Перед внесением изменений убедитесь, что вы правильно перекомпилировали (очистите - построите) свой код. Вы все еще получаете ту же ошибку после всего вышеперечисленного? – Plirkee

+0

Спасибо Plirkee ... после очистки проекта ошибка исчезла. – Leo

ответ

1

Попробуйте не использовать с запятой в конце команды:

String queryPtyRole = "select * from emp"; 

Это должно работать.

+0

Это сработало, но не в случае вложенных запросов. – Leo

+0

@Leo Можете ли вы проверить, какую ошибку вы получаете для какого запроса, потому что ошибка, которую вы отправили ранее, возникает для проблем формирования SQL, и в запросе, который вы опубликовали в редактировании, нет никаких проблем с формацией, как я вижу. –

+0

Ошибка такая же Piyush – Leo

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