I have a homework in which our teacher asked us to write a code in which the user can add, delete and edit his wishlist...I can only do add and delete...I am sure that there is a lot of problem for edit so please help me to make it work...I am using database for this...

This is my html code:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Christmas Wishes</title>
</head>
<body>
<h3>Place Your Christmas Wishes Here</h3>
<form action="ChristmasWishlist" method=post>
<table>
<tr><th>Wish:</th><td><input type=text name=gift size=100></td></tr>
<tr><th>Amount:</th><td><input type=text name=amount size=10></td></tr>
<tr><th colspan=2><input type=submit name=submit value="Add"></th></tr>
</table>
</form>
</body>
</html>

This is my servlet:

import java.sql.Connection;
import java.sql.DriverManager;

public class ConnectionManager {

	protected Connection con;
    protected String driver = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/";
    String database = "WishList";
    String user = "root";
    String password = "";
    
    /** Creates a new instance of ConnectionManager */
    public ConnectionManager() {
        
    }
    public Connection logOn(){
        try {
		Class.forName(driver).newInstance();
		con = DriverManager.getConnection(url+database,user,password);
		
        }
        catch(Exception e){
            System.out.print(e.getMessage());
        }
        return con;
        
    }
    
    public void logOff(){
        try {
            con.close();
        }
         catch(Exception e){
            e.printStackTrace();
        }
    }
}

This is my other servlet:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;

/**
 * Servlet implementation class for Servlet: ChristmasWishlist
 * 
 */
public class ChristmasWishlist extends javax.servlet.http.HttpServlet implements
		javax.servlet.Servlet
{
	static final long serialVersionUID = 1L;

	/*
	 * Connect to the database
	 */

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public ChristmasWishlist()
	{
		super();
	}

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
	 *      HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException
	{
		// TODO Auto-generated method stub
		process(request, response);
	}

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
	 *      HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException
	{
		// TODO Auto-generated method stub
		process(request, response);
	}

	protected void process(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException
	{
		response.setContentType("text/html");
		java.io.PrintWriter out = response.getWriter();
		out.println("<html><title>List of All Your Wishes</title><body>");

		//check if you are getting the right values, comment out once the program is working
		//line below will work only for java 5 up
		java.util.Enumeration e = request.getParameterNames();
		while (e.hasMoreElements())
		{
			String gift = e.nextElement().toString();
			out.println("<br>" + gift + " - " + request.getParameter(gift));
		}

		if (request.getParameter("submit") != null)
		{
			if (!request.getParameter("submit").isEmpty())
			{
				if (request.getParameter("submit").equals("Add"))
				{
					if (!request.getParameter("gift").isEmpty())
					{
						out.println(addChristmasWishlist(request
								.getParameter("gift")));
					} 
					else
					{
						out.println("<p>Nothing to do");
					}
				}
				
				else if(request.getParameter("submit").equals("Delete"))
				{
					delChristmasWishlist(Integer.parseInt(request.getParameter("id")));
				}
			else if(request.getParameter("submit").equals("Delete"))
			{
				out.println("<p>Nothing to do");
			}
		}

		} else
		{
			out.println("<p>empty");
		}
		out.println("<p><a href=wish.html>Add again</a>");
		
		ResultSet rst = null;
		try
		{
			rst = viewChristmasWishlist();
			int count = 1;
			out.println("<table><tr><th colspan=2>ChristmasWishlist</th></tr>");
			while(rst.next())
			{
				out.println("<tr><td><b>"+count+".</b></td><td>"+rst.getString("gift")+"</td>" + 
						"<td><a href=ChristmasWishlist?id="+rst.getInt("id")+"&submit=Edit>Edit</a.</td>"+
						"<td><a href=ChristmasWishlist?id="+rst.getInt("id")+"&submit=Delete>Delete</a.</td></tr>");
				count++;
			}
			out.println("</table>");
		}
		catch(Exception e2)
		{
			
		}
		
		out.println("</body></html>");

	}

	public String addChristmasWishlist(String wish)
	{

		try
		{
			ConnectionManager con = new ConnectionManager();
			Statement stmt = con.logOn().createStatement();
			String msg = "";
			String sql = "insert into wishes set gift='" + wish.replaceAll("\'", "\\\'") + "'";
			if (stmt.execute(sql))
			{
				msg = "Insert failed";
			} 
			else
			{
				msg =  "Added successfully";
			}
			con.logOff();
			return msg;
			
		} 
		catch (SQLException e)
		{
			
			return "Add failed. SQL error " + e.getMessage();
		} 
		catch (java.lang.NullPointerException ne)
		{
			
			return "<?p>Null error: " + ne.getMessage();
		}

	}
	
	
	public String delChristmasWishlist(int id)
	{

		try
		{
			ConnectionManager con = new ConnectionManager();
			Statement stmt = con.logOn().createStatement();
			String msg = "";
			String sql = "delete from wishes where id="+id;
			if (stmt.execute(sql))
			{
				msg = "Delete failed";
			} else
			{
				msg =  "Delete successfully";
			}
			con.logOff();
			return msg;
			
		} catch (SQLException e)
		{
			
			return "Add failed. SQL error " + e.getMessage();
		} catch (java.lang.NullPointerException ne)
		{
			
			return "<p>Null error: " + ne.getMessage();
		}
		
		

	}

	public String editChristmasWishlist(String wish)
	{

		try
		{
			ConnectionManager con = new ConnectionManager();
			Statement stmt = con.logOn().createStatement();
			String msg = "";
			String sql = "update from wishes where gift="+wish;
			if (stmt.execute(sql))
			{
				msg = "update failed";
			} else
			{
				msg =  "update successfully";
			}
			con.logOff();
			return msg;
			
		} catch (SQLException e)
		{
			
			return "Add failed. SQL error " + e.getMessage();
		} catch (java.lang.NullPointerException ne)
		{
			
			return "<p>Null error: " + ne.getMessage();
		}
		
		

	}

	public ResultSet viewChristmasWishlist()
	{

		ResultSet rst = null;
		try
		{
			ConnectionManager con = new ConnectionManager();
			Statement stmt = con.logOn().createStatement();
			String msg = "";
			
			String sql = "select * from  wishes";
			rst = stmt.executeQuery(sql);
	
			
		} catch (SQLException e)
		{
			
			
		} catch (java.lang.NullPointerException ne)
		{
			
			
		}
		return rst;
	}

}

please help me with this...you can just concentrate on edit since I was able to do add and delete...please and thank you...

public String editChristmasWishlist(String wish)
	{

		try
		{
			ConnectionManager con = new ConnectionManager();
			Statement stmt = con.logOn().createStatement();
			String msg = "";
			String sql = "update from wishes where gift="+wish;
			if (stmt.execute(sql))
			{
				msg = "update failed";
			} else
			{
				msg =  "update successfully";
			}
			con.logOff();
			return msg;
			
		} catch (SQLException e)
		{
			
			return "Add failed. SQL error " + e.getMessage();
		} catch (java.lang.NullPointerException ne)
		{
			
			return "<p>Null error: " + ne.getMessage();
		}
		
		

	}

We have no way of knowing how your interface looks / how your table structure looks like. Next time try posting a more detailed explanation of how your application looks like.

There are some visible problems with your code:

  • Consider using PreparedStatement instead of normal Statement to get around the problem of SQL Injection and complicated quoting / unquoting.
  • NullPointerException is a runtime exception which can be very well avoided with a simple check. The very fact that you are catching it shows there is something wrong with your design.
  • And the most important of all, your SQL statement is hosed! The syntax of your update SQL statement is incorrect. UPDATE table_name SET column_name = value WHERE column_name = that_thing;
  • The logic seems to be incorrect. Do you plan on updating the wishlist of all those people who have the same wish? At least that is what it seems to me since you seem to be updating on 'wish' and not on the unique 'id'. (if you have one)

At least skim through the basic SQL and JDBC tutorial before you consider writing a web application. Start here and here.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.