0

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();
4

1 に答える 1

3

comma上の余分なものを取り除くcompany

 + "     company = ?, "
                    ^ here
于 2012-11-26T02:52:14.630 に答える