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つとして実行していたと考えられます。 – tadman
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