2015-07-05 2 views
0


Я не могу удалить данные, из БД (MySql), с пробелами, например:
«BlaBla BlaBla» или «BlaBla», но данные без пробелов удаление: «блаблабла "

Вот как я получаю значение в JSP:удалить данные из БД с пробелами в JSP

<a href=deleteData?id=<%= rs.getString(1)></a> 

и deleteData - Servlet

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.Statement; 

@WebServlet("/deleteData") 
public class deleteData extends HttpServlet { 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    String value = request.getParameter("id"); 


    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/evernoteDB", 
       "evernoteDB", "0633739768z"); 


     Statement st = conn.createStatement(); 

     st.executeUpdate("DELETE FROM note WHERE noteName='" + value + "'"); 

     response.sendRedirect("/userNotes.jsp"); 

     conn.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

} Я думаю, что проблема в функции getString, но на веб-сайте oracle упоминается, что эта функция получает все строки, я разочарован

+0

Ну, для начала, используйте 'PreparedStatement'; как сейчас, ваш код становится жертвой SQL-инъекции. – fge

+0

@fge - это правильно. Я рекомендовал то же самое вчера по вашему последнему вопросу, на который я ответил за вас. Пожалуйста, прибегайте к использованию лучших практик как можно скорее. Отключение их просто поможет вам улучшить свои навыки. И использование 'PreparedStatement' - это всего лишь две дополнительные строки! –

+0

@RaviThapliyal Спасибо, что я, хотя PreparedStatement не решает эту проблему –

ответ

0

Вы перенаправляете в свой href, а пробелы в URL-адресе переводятся на% 20 поэтому, когда вы передаете «blabla blabla», ваше удаление не соответствует результатам. Вы должны дезинфицировать свою ценность.

Uggly быстрый способ:

Заменить% 20 ​​для пустой строки

Правильный способ: Java: How to unescape HTML character entities in Java?