0

Whenever I try to call insert method which is in RegisterDao I get an "unhandled SQL exception" error in Eclipse that forces me to add a catch try block. This always screws me up from there, because a try catch makes me initialize result as null... I can't get it to work.

LogServlet.java

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


@WebServlet("/LogServlet")
public class LogServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LogServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

     @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
        
     }


@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
         
            String id = request.getParameter("id");
            String name = request.getParameter("name");
            String title = request.getParameter("title");
            String date = request.getParameter("date");
            Log log = new Log(id, name, title, date);
        
            RegisterDao rDao = new RegisterDao();
         String result;
        result = rDao.insert(log);
        response.getWriter().print(result);
}
}

RegisterDao.java

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class RegisterDao {
    

    private static final String USERNAME = "dbuser";
    private static final String PASSWORD = "dbpassword";
    private static final String M_CONN_STRING =
            "jdbc:mysql://localhost/loggy";

    
    
    
    public String insert(Log log) throws SQLException {
    
    
        Connection con = DBUtil.getConnection(DBType.MYSQL);
        String result = "Data entered successfully";
        String sql = "insert into logs values(?,?,?,?)";
    
        PreparedStatement ps;
        try {
        ps = con.prepareStatement(sql);
        ps.setString(1, log.getid());
        ps.setString(2, log.getName());
        ps.setString(3, log.getTitle());
        ps.setString(4, log.getDate());
        ps.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            result = "Data not entered";
        }
        return result;
    }

}
fili009
  • 9
  • 1
  • Why do you have `insert(Log log) throws SQLException` when you have `catch (SQLException e)` ? Why don't you change this code? – Scary Wombat Oct 15 '20 at 01:36
  • When I take out throws ,i get another one saying there's an SQL exception not handled at Connection con = DBUtil.getConnection – fili009 Oct 15 '20 at 02:34
  • 1
    Keep `result` outside of the `try`. Add `con`, `sql` and `ps` inside the `try`. – SedJ601 Oct 15 '20 at 03:30

0 Answers0