I'm using Eclipse EE in doing dynamic web project from YT (for practice and school). Every time I run the program, I always get this error "java.lang.NullPointerException" I tried a lot of ways to fix it, but it's still there. Can anyone help me solve this error, please? Thank you.
DAO Class
the error points at this line: PreparedStatement preparedStatement = connection.prepareStatement(SELECT_ALL_TASK);)
and
List listTask = taskDAO.selectAllTask();
//database operations for the table Task in MySQL Database
public class TaskDAO {
private String jdbcURL = "jdbc:mysql://localhost:3306/taskmanager?useSSL=false";
private String jdbcUsername = "root";
private String jdbcPassword = "DataPass";
private static final String INSERT_TASK_SQL = "INSERT INTO task" + " (name, desc1, due) VALUES "
+ " (?, ?, ?);";
private static final String SELECT_TASK_BY_NUM = "select num,name,desc1,due from task where num =?";
private static final String SELECT_ALL_TASK = "select * from task";
private static final String DELETE_TASK_SQL = "delete from task where num = ?;";
private static final String UPDATE_TASK_SQL = "update task set name = ?,desc1= ?, due =? where num = ?;";
//connection to the database
protected Connection getConnection() {
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return connection;
}
//create and insert new task
public void insertTask(Task task) {
try (Connection connection = getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(INSERT_TASK_SQL)){
preparedStatement.setString(1, task.getName());
preparedStatement.setString(2, task.getDesc1());
preparedStatement.setString(3, task.getDue());
preparedStatement.executeUpdate();
}catch (Exception e) {
e.printStackTrace();
}
}
//update a task
public boolean updateTask(Task task) throws SQLException {
boolean rowUpdated;
try (Connection connection = getConnection();
PreparedStatement statement = connection.prepareStatement(UPDATE_TASK_SQL);) {
statement.setString(1, task.getName());
statement.setString(2, task.getDesc1());
statement.setString(3, task.getDue());
statement.setInt(4, task.getNum());
rowUpdated = statement.executeUpdate() > 0;
}
return rowUpdated;
}
//select task by num(PK)
public Task selectTask(int num) {
Task task = null;
// establish connection
try (Connection connection = getConnection();
// create statement
PreparedStatement preparedStatement = connection.prepareStatement(SELECT_TASK_BY_NUM);) {
preparedStatement.setInt(1, num);
System.out.println(preparedStatement);
// execute query
ResultSet rs = preparedStatement.executeQuery();
// process the resultset
while (rs.next()) {
String name = rs.getString("name");
String desc1 = rs.getString("desc1");
String due = rs.getString("due");
task = new Task(num, name, desc1, due);
}
} catch (SQLException e) {
e.printStackTrace();
}
return task;
}
//select all task
public List<Task> selectAllTask() {
List<Task> tasks = new ArrayList<>();
// establish connection
try (Connection connection = getConnection();
// create statement
PreparedStatement preparedStatement = connection.prepareStatement(SELECT_ALL_TASK);) {
System.out.println(preparedStatement);
// execute query
ResultSet rs = preparedStatement.executeQuery();
// process the resultset
while (rs.next()) {
int num = rs.getInt("id");
String name = rs.getString("name");
String desc1 = rs.getString("desc1");
String due = rs.getString("due");
tasks.add(new Task(num, name, desc1, due));
}
} catch (SQLException e) {
e.printStackTrace();
}
return tasks;
}
//delete a task
public boolean deleteTask(int num) throws SQLException {
boolean rowDeleted;
try (Connection connection = getConnection();
PreparedStatement statement = connection.prepareStatement(DELETE_TASK_SQL);) {
statement.setInt(1, num);
rowDeleted = statement.executeUpdate() > 0;
}
return rowDeleted;
}
}
this is my Servlet class:
/**
* Servlet implementation class TaskServlet
*/
@WebServlet("/")
public class TaskServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private TaskDAO taskDAO;
public TaskServlet() {
this.taskDAO = new TaskDAO();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = request.getServletPath();
switch (action) {
case "/new":
showNewForm(request, response);
break;
case "/insert":
try {
insertTask(request, response);
} catch (SQLException e4) {
// TODO Auto-generated catch block
e4.printStackTrace();
} catch (IOException e4) {
// TODO Auto-generated catch block
e4.printStackTrace();
}
break;
case "/delete":
try {
deleteTask(request, response);
} catch (SQLException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
} catch (IOException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
break;
case "/edit":
try {
showEditForm(request, response);
} catch (SQLException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (ServletException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
break;
case "/update":
try {
updateTask(request, response);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
break;
default:
try {
listTask(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
}
//for "/new" request
private void showNewForm(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher dispatcher = request.getRequestDispatcher("task-form.jsp");
dispatcher.forward(request, response);
}
//for "/insert" request
private void insertTask(HttpServletRequest request, HttpServletResponse response)
throws SQLException, IOException {
String name = request.getParameter("name");
String desc1 = request.getParameter("desc1");
String due = request.getParameter("due");
Task newTask = new Task(name, desc1, due);
taskDAO.insertTask(newTask);
response.sendRedirect("list");
}
//for "/delete" request
private void deleteTask(HttpServletRequest request, HttpServletResponse response)
throws SQLException, IOException {
int num = Integer.parseInt(request.getParameter("num"));
taskDAO.deleteTask(num);
response.sendRedirect("list");
}
//for "/edit" request
private void showEditForm(HttpServletRequest request, HttpServletResponse response)
throws SQLException, ServletException, IOException {
int num = Integer.parseInt(request.getParameter("num"));
Task existingTask = taskDAO.selectTask(num);
RequestDispatcher dispatcher = request.getRequestDispatcher("task-form.jsp");
request.setAttribute("task", existingTask);
dispatcher.forward(request, response);
}
//for "/update" request
private void updateTask(HttpServletRequest request, HttpServletResponse response)
throws SQLException, IOException {
int num = Integer.parseInt(request.getParameter("num"));
String name = request.getParameter("name");
String desc1 = request.getParameter("desc1");
String due = request.getParameter("due");
Task book = new Task(num, name, desc1, due);
taskDAO.updateTask(book);
response.sendRedirect("list");
}
private void listTask(HttpServletRequest request, HttpServletResponse response)
throws SQLException, IOException, ServletException {
List<Task> listTask = taskDAO.selectAllTask();
request.setAttribute("listTask", listTask);
RequestDispatcher dispatcher = request.getRequestDispatcher("task-list.jsp");
dispatcher.forward(request, response);
}
}
Aucun commentaire:
Enregistrer un commentaire