2016-07-12 2 views
1

Я пытаюсь написать код для поиска базы данных mysql для идентификатора сотрудника и отображения соответствующего содержимого.Сервлета к подключению MYSQL

Я написал index.jsp для ввода идентификатора сотрудника и кода сервлета для подключения к базе данных. Моя проблема заключается в его не выполняет оператор и он бросает мне выходной ... Пожалуйста, помогите мне ...

package mypkg; 


import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class calandar extends HttpServlet { 
/** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException,IOException{ 
response.setContentType("text/html"); 
Connection con = null; 


String url = "jdbc:mysql://localhost:3306/escp?useSSL=false"; 
String driver = "com.mysql.jdbc.Driver"; 
String user = "root"; 
String pass = "password"; 

String id=""; 
id=request.getParameter("Id"); 
String sqlquery="SELECT * FROM employee WHERE emp_id='"+id+"'"; 

try{ 
Class.forName(driver); 
con = DriverManager.getConnection(url, user, pass); 
try{ 
Statement st = con.createStatement(); 
ResultSet rs = st.executeQuery(sqlquery+id); 
while (rs.next()) { 

} 
}catch (SQLException s){ 
System.out.println("SQL statement is not executed!"); 
} 
} 
catch (Exception e){ 
e.printStackTrace(); 
} 

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/Result.jsp"); 
dispatcher.forward(request, response); 
} 

} 
+3

Поскольку у вас есть 'SQLException', причина, по которой вы получили вывод как' 'SQL-инструкция, не выполняется!" 'Пожалуйста, поместите' s.printStackTrace() 'внутри блока catch SQLException и проверьте исключение. –

ответ

1

Это не смотреть прямо на все «заявление SQL не выполняется!»:

ResultSet rs = st.executeQuery(sqlquery+id); 

Поскольку вы уже конкатенации идентификатор в запросе, он должен быть просто:

ResultSet rs = st.executeQuery(sqlquery); 

отметить также, что ваш код широко открыты для атак путем внедрения SQL.

+0

Perfect !! Хороший улов. Огромное спасибо. Как я могу предотвратить атаки SQL Injection? – sady

+1

Используя подготовленные заявления. –

+0

Извините, я новичок в Java/JSP. Можете ли вы привести мне пример? как добавить его в свой код? – sady

Смежные вопросы