Reputation: 35
I have tried storing date from input to mysql database, but the value is still null. Is there anyway to make it work? Also it says 'data added' but it is not inserted in database and below it in console it gives NullPointerException.
JSP page
<html>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Date Input</title>
<script>
$(function(){
$('.datepicker').datepicker();
});
</script>
</head>
<body>
<form action="Date" method="post">
<div class="row">
Date: <input class="datepicker" type="text" name="date" id="date">
</div>
<input type="submit" value="save">
</form>
</body>
</html>
Java class for connection
package com.jsppractise;
public class Date extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String dt = request.getParameter("date").toString();
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sportsevent", "root", "root");
PreparedStatement ps = con.prepareStatement("insert into date (date) values(?)");
java.util.Date date = new SimpleDateFormat("MM/dd/yyyy").parse(dt);
java.sql.Date d = new java.sql.Date(date.getTime());
ps.setDate(1, d);
ps = con.prepareStatement("select * from date");
ResultSet s;
s = ps.executeQuery();
if (s != null) {
System.out.println("date added");
} else {
System.out.println("not added");
}
out.print("<html><body><table><th>Date</th>");
out.print("<tr><td>" + s.getDate(1) + "</td></tr>");
out.print("</table></body></html>");
} catch (Exception e) {
System.out.println(e);
}
}
}
Upvotes: 1
Views: 3421
Reputation: 17524
You are never executing the insert statement, add an executeUpdate
call :
PreparedStatement ps = con.prepareStatement("insert into date (date) values(?)");
java.util.Date date = new SimpleDateFormat("MM/dd/yyyy").parse(dt);
java.sql.Date d = new java.sql.Date(date.getTime());
ps.setDate(1, d);
ps.executeUpdate();// ADDED
ps = con.prepareStatement("select * from date");
ResultSet s = ps.executeQuery();
And to quote @SpringLearner :
Remember to close connection,resultset and preparedstatement
Upvotes: 2