2016-07-27 5 views
1

準備文を実行しようとしていて、MySQL構文でエラーが発生しました。エラーは何ですか?Prepared StatementのSQL構文に誤りがありますか?

コード:

PreparedStatement stmt = null; 
conn = ds.getConnection(); 
String query = "select distinct FName from PRL p1, RequestView p2 where p1.RequestId = p2.RequestId and p1.PackageId = p2.PackageId and p1.ProductId = ? and p1.ProductNumber = ? and p1.Version = ? order by p2.ArtName"; 
stmt = conn.prepareStatement(query); 
stmt.setString(1,id); 
stmt.setString(2,num); 
stmt.setString(3,ver); 
rs = stmt.executeQuery(query); 

エラー:

Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? and p1.ESTProductMatNumber =? and p1.Version =? order by p2.ArtworkName' at line 1 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936) 

答えて

1

気にしません。私はそれを考え出した。 rs = stmt.executeQuery(クエリ);はrs = stmt.executeQuery()でなければなりません。

+0

クエリをクエリの値の1つとして実行していたと考えられます。 – tadman

+0

BTW Java 7以降を使用している場合は、次のようにautocloseable機能を使用することを検討してください。 try(stmt = conn.prepareStatement(query)){ stmt.setString(1、id); stmt.setString(2、num); stmt.setString(3、ver); rs = stmt.executeQuery(query); ... } //対処したい場合はcatchを使用します – lospejos

関連する問題