2017-05-24 46 views
1

历史: History I. History II.如何在JSP中的德比数据库中插入和删除值? [3]

所以问题还在这里。如果我选择某人并按下删除按钮,则不要从数据库中删除其他人创建的新空记录。

的client.java:

public class client implements DatabaseConnection{ 

private static Connection conn = null; 

private static void createConnection(){ 
try { 
    conn = DriverManager.getConnection(URL, USER, PASSWORD); 
} catch (SQLException ex) { 
    Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex); 
} 
} 

private static void closeConnection(){ 
if (conn != null){ 
    try { 
    conn.close(); 
    } catch (SQLException ex) { 
    Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
} 

public List clientList(){ 
    createConnection(); 
    List list=new ArrayList(); 
    try { 
     Statement stmt=conn.createStatement(); 
     ResultSet rs=stmt.executeQuery("SELECT * FROM customer"); 
     while(rs.next()){ 
      **list.add(rs.getString("ID"));** 
      list.add(rs.getString("CNAME")); 
      list.add(rs.getString("ADDRESS")); 
      list.add(rs.getString("PHONENUMBER")); 
     } 
     stmt.close(); 
    } catch (Exception e) { 
     e.printStackTrace(System.err); 
    } 
    return list; 
} 

public void newClient(String name, String address, String phoneNumber) 
throws SQLException{ 
    PreparedStatement ps = null; 
    try { 
     createConnection(); 
     String insert="INSERT INTO CUSTOMER(CNAME,ADDRESS, PHONENUMBER) 
VALUES(?,?,?)"; 
     ps=conn.prepareStatement(insert); 
     ps.setString(1, name); 
     ps.setString(2, address); 
     ps.setString(3, phoneNumber); 
     ps.executeUpdate(); 
     ps.close(); 
    } catch (Exception e) { 
     e.printStackTrace(System.err); 
    } 
    finally { 
     ps.close(); 
     closeConnection(); 
    } 
} 
public void deleteClient(String ID){ 
    try { 
     createConnection(); 
     String delete="DELETE FROM CUSTOMER WHERE ID=?"; 
     PreparedStatement ps=conn.prepareStatement(delete); 
     ps.setString(1, ID); 
     ps.executeUpdate(); 
    } catch (Exception e) { 
     e.printStackTrace(System.err); 
    } 
    **finally { 
    closeConnection(); 
}** 
} 

} 

中的index.jsp:

<jsp:useBean id="client" class="database.client" scope="page" /> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body bgcolor="lightgrey"> 
    <% 
     String ID=request.getParameter("ID"); 
     String NAME=request.getParameter("CNAME"); 
     String ADDRESS=request.getParameter("ADDRESS"); 
     String PHONENUMBER=request.getParameter("PHONENUMBER"); 
    %> 
    <form method="post" action=""> 
    <table border="0" align="left"> 
     <th colspan="2" align="center" style="color: brown">Field</th> 
     <tr> 
      <td>Name:</td> 
      <td><input type="text" name="CNAME" style="background- 
color:beige"/></td> 
     </tr> 
     <tr> 
      <td>Address?</td> 
      <td><input type="text" name="ADDRESS" style="background- 
color:beige"/></td> 
     </tr> 
     <tr> 
      <td>PhoneNumber:</td> 
      <td><input type="text" name="PHONENUMBER" style="background- 
color:beige"/></td> 
     </tr> 
      <input type="submit" name="OK" onclick=" 
       <% 
       if(NAME!=null && ADDRESS!=null && PHONENUMBER!=null){ 
        client.newClient(NAME, ADDRESS, PHONENUMBER); 
       } 
       %>" value="OK"/> 
      <input type="submit" name="Cancel" onclick=" 
       <% 
       //nothing 
       %>" value="Cancel"/> 
      <input type="submit" name="Delete" onclick=" 
<%client.deleteClient(ID);%>" value="Delete"/> 
    </table> 
    <table border="2"> 
     <th colspan="4" align="center" bgcolor="orange">Clients</th> 
     <tr bgcolor="silver" align="center"> 
      <td>&nbsp;</td> 
      **<td>ID</td>** 
      <td>Name</td> 
      <td>Address</td> 
      <td>PhoneNumber</td> 
     </tr> 
     <% 
      List list=client.clientList(); 
      Iterator it=list.iterator(); 

      while(it.hasNext()){ 
       out.print("<tr bgcolor='lightgreen'>"); 
       out.print("<td>"); 
       **ID**=(String)it.next(); 
       out.print("<input type='radio' name='ID' value="+**ID**+"/>"); 
       out.print("</td>"); 
       out.print("<td>"); 
       out.print(**ID**); 
       out.print("</td>"); 
       for (int i = 0; i < **3**; i++) { 
        out.print("<td>"); 
        out.print(it.next()); 
        out.print("</td>"); 
       } 
      out.print("</tr>"); 

      } 
     %> 
    </table> 
</form> 
</body> 
</html> 
+0

你的Java代码是好的,但另一方面,你的jsp代码看起来像uuugh ...你可以使用类似'ajax'的东西来做这些操作....我希望这是一个学生应用程序,而不是生产准备好的应用程序......我可以帮助你,现在我需要你在你的Delete按钮上点击右键并选择Inspect element,然后在Dom Explorer中复制突出显示的html并添加到你的问题... – Hackerman

回答

1

只需创建一个新的Servlet(删除的Servlet),并通过该ID的URL和新的jsp页面处理它...您可以更改您的代码likethis:

指数JSP:

<a href="DeleteServlet?id=<%=Integer.toString(person.getID())%>">Delete</a> 

删除的Servlet:更新

@WebServlet(name = "DeleteServlet", urlPatterns = {"/DeleteServlet"}) 
public class DeleteServlet extends HttpServlet { 

/** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
private static final Logger LOGGER = Logger.getLogger(CurdOperationsImpl.class.getName()); 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 
     String ID = request.getParameter("id"); 


      int id = Integer.parseInt(PersonId); 

      deleteClient(id); // add your own code 

      out.println("<h2 style='color: green'>Person Deleted Sucessfully.</h2>"); 
      response.sendRedirect("index.jsp"); 
     }else { 

     } 
    } 

奖励:获得这个我难看的Servlet,JSP MySQL的项目是准备使用Github link 我希望这可以帮助您。

+0

你好 如何创建DeleteServlet?在网页 - > index.jsp? – Lobi

+0

不在index.JSP中创建单独的servlet类。 –

+0

在源码包文件夹中?新建 - > Java包:servlet?并在servlet包中:new - > Servlet? – Lobi

相关问题