2016-08-09 34 views
0

Oracleデータベースに接続してレコードを取得しようとしました。データベースへコマンドが正常に終了しなかったエラー - 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

最初のエラーを修正してください - "セミコロン"誤解を招くので、回答の1つに記載されています)。 2番目の問題については、あなたの質問を再度お伝えください。変更が加えられたら、コードを適切に再コンパイル(クリーンビルド)してください。あなたはまだ上記のすべての後に同じエラーが発生していますか? – Plirkee

+0

ありがとうございます...プロジェクトをクリーニングした後、エラーはなくなりました。 – Leo

答えて

1

は、コマンドの末尾にセミコロンを使用しないようにしてください:

String queryPtyRole = "select * from emp"; 

これは動作するはずです。

+0

これは機能しましたが、ネストされたクエリの場合は機能しません。 – Leo

+0

@Leoあなたが以前に投稿したエラーがSQLフォーメーションの問題のために来て、あなたが編集に投稿したクエリが私が見ているようにフォーメーションの問題を持たないため、どのようなエラーが発生しているかチェックできますか? –

+0

エラーは同じですPiyush – Leo

関連する問題