SQL インジェクション攻撃から SQL クエリを保護するために、準備済みステートメントを使用しています。このステートメントは別の投稿で提案されており、示されているとおりに実装しました。更新クエリを実行するとエラーが発生するようになりました。私のプログラムのいくつかのステップでのみ発生します。コードの一部と、エラーの詳細を示すコメント領域を次に示します。プログラム全体を投稿する必要がある場合は、お知らせください。
スニペットは次のとおりです。
String updateQuery ="" + " Update student"
+ "Set firstname = ?, "
+ " lastname = ?, "
+ " gpa = ? "
+ " status = ?, "
+ " mentor = ?, "
+ " level = ?, "
+ " thesisTitle = ?, "
+ " thesisAdvisor = ?, "
+ " company = ?, "
+ "Where studentid = ? ";
//This seems to work right up to set #7, then the program errors out. It indicates a syntax error that I cannot find?
// I wonder if the error is version dependant? Error points to MySQL version for correct syntax to use near '= ?, that would be right after firstName.
PreparedStatement pstmt = conn.prepareStatement(updateQuery); //to protect against SQL injection attacks
pstmt.setString(1,firstName);
pstmt.setString(2,lastName);
pstmt.setDouble(3,gpa);
pstmt.setString(4,status);
pstmt.setString(5,mentor);
pstmt.setString(6,level);
pstmt.setString(7,thesisTitle);
pstmt.setString(8,thesisAdvisor);
pstmt.setString(9,company);
pstmt.setString(10,studentID);
int rowsInserted = stmt.executeUpdate(updateQuery);
System.out.print("Number of Rows inserted = " + rowsInserted);
// Close the statement and the connection
stmt.close();
conn.close();