Как я могу использовать функцию замены в JSP, чтобы избежать одиночной кавычки

Я просто хочу спросить, как использовать функцию REPLACE в JSP, чтобы избежать одинарной кавычки, как addlashes() в PHP

мой код

String task_name= request.getParameter("task_name");
String rep_task_name=task_name.replace("\'","\\\'");
st2 = con.createStatement();
st2.executeUpdate("UPDATE taskes SET task_name='"+rep_task_name+"');

Спасибо

2 ответа

Спасибо за повтор

полный код

<%
        request.setCharacterEncoding("UTF-8");
        String task_order = request.getParameter("task_order");
        //String task_id = request.getParameter("task_id");
        String task_name = request.getParameter("task_name");
        String implementation_phase = request.getParameter("implementation_phase");            
        String what_has_thereon = request.getParameter("what_has_thereon");
        String executing_agency = request.getParameter("executing_agency");
        String note = request.getParameter("note");
        String end_date = request.getParameter("end_date");
        String task_id = request.getParameter("task_id");
        String team_id = request.getParameter("team_id");
        //String expression ="\'";
       // String replacement = "\'";
       // String rep_task_name=task_name.replace('v', 'q');
      String rep_task_name=task_name.replace("\'","\\\'");;


        try {

        Class.forName("com.mysql.jdbc.Driver");
        String hostname = "localhost:3306";
        String dbname = "teams_manage";
        String dburl = "jdbc:mysql://" + hostname + "/" + dbname;
        String user = "root";
        String pass = "";
             Connection con=DriverManager.getConnection( "jdbc:mysql://"+hostname+"/"+dbname+"?useUnicode=true&characterEncoding=UTF-8",user,pass);
            Statement st2 = null;

            st2 = con.createStatement();
           // session.getAttribute("role_die");
            st2.executeUpdate("UPDATE taskes SET task_order='"+task_order+"', task_name='"+rep_task_name+"',implementation_phase='"+implementation_phase+"', what_has_thereon='" + what_has_thereon + "', executing_agency='" + executing_agency + "', end_date='" + end_date + "', note='" + note + "' WHERE task_id =" + task_id + "");
            response.sendRedirect("index.jsp?dire="+session.getAttribute("role_die")+"&mmid="+session.getAttribute("memmber_id")+"&team_id="+session.getAttribute("team_id"));
        } catch (ClassNotFoundException ex) {
            throw new SecurityException("not fund" + ex.toString());
        }


    %>

так что вы имеете в виду, я должен изменить операторы и использовать функцию con.prepareStatement

НЕ используйте операторы SQL, сконструированные таким образом, ИСПОЛЬЗУЙТЕ PreparedStatement ( почему):

String task_name = request.getParameter("task_name");
st2 = con.prepareStatement("UPDATE tasks SET task_name = ?"); // missing WHERE?
st2.setString(1, task_name);
st2.executeUpdate();

Драйвер JDBC очистит параметры для вас.

Другие вопросы по тегам