文章結束給大家來個程序員笑話:[M]
本文是記錄Java中實現批量刪除操縱(Java對數據庫進行事務處置),在開始之前先來看上面這樣的一個頁面圖:
上面這張圖片表現的是從數據庫中查詢出的出租信息,信息中進行了分頁處置,然后每行的后面提供了一個復選按鈕和對應的一個刪除操縱,可以選中多個進行操縱,這里主要是進行刪除操縱。在執行刪除操縱之前先要選中對應的行信息,點擊刪除選中按鈕進行刪除。當進行多條信息刪除的時候,需要使用java的事務處置機制對數據庫進行刪除,也就是說刪除的時候如果選中的要刪除的說有信息其中一條沒有成功刪除的話,那么就都不刪除。
現在是在java中對數據庫實現這一操縱,我們可看上面的代碼,它實現了對數據庫的批量刪除操縱,代碼如下:
public Connection con=null; public PreparedStatement pstmt=null; /** * 失掉連接對象 */ public void getConnection(){ String driver="com.mysql.jdbc.Driver"; String url="jdbc:mysql://localhost:3306/zufang?user=root&password=root&useUnicode=true&characterEncoding=GB2312"; try { Class.forName(driver); con=DriverManager.getConnection(url,"root","root"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }
/** * 批量刪除信息表中的信息 * @param sql * @param param * @return */ public boolean updateBatchDel(String sql,String[] param){ boolean flag = false; getConnection(); try { con.setAutoCommit(false); pstmt = con.prepareStatement(sql); for(int i =0 ;i<param.length;i++){ pstmt.setString(1,param[i].trim()); pstmt.addBatch(); } pstmt.executeBatch(); //批量執行 con.commit();//提交事務 flag = true; } catch (SQLException e) { try { con.rollback(); //進行事務回滾 } catch (SQLException ex) { ex.printStackTrace(); } }finally { closeAll(null,pstmt,con); } return flag; }
當然上面是進行批量刪除,如果我們只刪除一條信息的話也可以使用獨自的刪除方法,即是:點擊刪除,當然上面的方法也是可以完成的,還是再看一下吧:
/** * 刪除某條求租表中的信息 * @param id 刪除信息的id * @return 如果刪除成功,返回true;否則返回false */ public boolean delQiuZu(String id){ boolean flag=false; String sql="delete from qiuzhu where id=?"; String[] param={id}; flag=bd.updateDate(sql, param); return flag; }
控制器servlet中的處置操縱代碼如下:
package com.sxt.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sxt.biz.ChuZuBiz; import com.sxt.biz.PageBiz; import com.sxt.biz.QiuZuBiz; public class OutDateQiuzuServlet extends HttpServlet { QiuZuBiz qzb=new QiuZuBiz(); PageBiz pb=new PageBiz(); int pagesize=10; boolean flag=true; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("gb2312"); response.setContentType("text/html;charset=gb2312"); int countpage=pb.getOutDatePageCountQiuzu(pagesize); request.setAttribute("countpage", countpage); String nowpage=request.getParameter("nowpage"); String id=request.getParameter("id"); PrintWriter out = response.getWriter(); String command = request.getParameter("command"); if ("del".equals(command)) { String[] qiuzuIds = request.getParameterValues("selectFlag"); boolean flag = qzb.delQiuzuMany(qiuzuIds); if(flag){ out.print("<script>alert('刪除成功!');</script>"); }else{ out.print("<script>alert('刪除失敗!');</script>"); } } if(nowpage==null){ nowpage="1"; } if(Integer.valueOf(nowpage)<=0){ nowpage="1"; } if(Integer.valueOf(nowpage)>countpage){ nowpage=countpage+""; } if(id!=null){ flag=qzb.delQiuZu(id); } request.setAttribute("currentpage", nowpage); List list=qzb.getOutDateQiuZuInfo(Integer.valueOf(nowpage), pagesize); request.setAttribute("list1", list); if(flag){ request.getRequestDispatcher("admin/OutDateQiuzu.jsp").forward(request, response); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
上面是對數據庫的操縱代碼,上面看一下頁面中怎樣實現的,代碼如下:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>house</title> <script type="text/javascript"> //刪除用戶控制 function deleteSelect() { var select = document.getElementsByName("selectFlag"); var flag = false; for (var i=0; i<select.length; i++) { if (select[i].checked) { flag = true; break; } } if (!flag) { alert("請選擇需要刪除的過期求租信息!"); return; } if (window.confirm("確認要刪除過期的求租信息嗎?")) { with (document.getElementById("userform")) { action="OutDateQiuzuServlet?command=del"; method="post"; submit(); } } } //全選/反選操縱 function checkAll(ifAll) { var select = document.getElementsByName("selectFlag"); for(var i = 0;i<select.length;i++){ select[i].checked = ifAll.checked; } } </script> </head> <link rel="stylesheet" href="./skin/css/lianjie.css" type="text/css" /> <body> <form name="userform" action="ChuzuServlet" method="get"> <table width="1000" height="80" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td height="40" align="center" bgcolor="#F1F1F1"><font color="#FF0000"><b>已過期的求租信息</b></font></td> </tr> <tr> <td align="left"> <input name="btnDelete" class="button1" type="button" id="btnDelete" value="刪除選中" onClick="deleteSelect()"> </td> </tr> </table> <table width="1000" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC" style="word-break:break-all;"> <tr align="center"> <td width="15%" height="25" bgcolor="#F1F1F1"><font size="3"> <input type="checkbox" name="ifAll" title="全選/反選" onClick="checkAll(this)" checked="checked"/></font></td> <td width="10%" bgcolor="#F1F1F1"><font size="3">期望區域</font></td> <td width="15%" bgcolor="#F1F1F1"><font size="3">裝修水平</font></td> <td width="10%" bgcolor="#F1F1F1"><font size="3">房型</font></td> <td width="10%" bgcolor="#F1F1F1"><font size="3">面積(平米)</font></td> <td width="10%" bgcolor="#F1F1F1"><font size="3">價格(元)</font></td> <td width="10%" bgcolor="#F1F1F1"><font size="3">添加日期</font></td> <td width="10%" bgcolor="#F1F1F1"><font size="3">有效天數</font></td> <td width="10%" bgcolor="#F1F1F1"><font size="3">殘余天數</font></td> </tr> <c:choose> <c:when test="${empty list1}"> <tr><td colspan="8" align="center"><font color="red">還沒有過期的求租信息!</font></td></tr> </c:when> <c:otherwise> <c:forEach var="qiuzu" items="${list1}" > <tr> <td height="25" align="center" bgcolor="#FFFFFF"><input type="checkbox" name="selectFlag" value="${qiuzu.id}" checked="checked"/></font> <a href="javascript:if(confirm('確定要刪除這條過期的求租信息嗎?')){location.href='OutDateQiuzuServlet?id=${qiuzu.id}'}" style="COLOR: #0000ff;font-size:14px; TEXT-DECORATION:none;"><font size="2">刪除</font></a></td> <td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.qwqy}</font></td> <td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.zxcd}</font></td> <td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.hx}</font></td> <td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.jzmj}</font></td> <td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.zj}</font></td> <td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.addDate}</font></td> <td align="center" bgcolor="#FFFFFF"><font size="2">${qiuzu.yxts}</font></td> <td align="center" bgcolor="#FFFFFF"><font size="2" color="red">${qiuzu.syts}</font></td> </tr> </c:forEach> </c:otherwise> </c:choose> </table> </p> <table width="300" align="center" > <tr> <td align="center"><font size="2">共${countpage}頁</font></td> <td align="center"><font size="2">${currentpage}/${countpage}頁</font></td> <td align="center"><a href="OutDateQiuzuServlet?nowpage=${1}"><font size="2">首頁</font></a></td> <td align="center"><a href="OutDateQiuzuServlet?nowpage=${currentpage-1}"><font size="2">上一頁</font></a></td> <td align="center"><a href="OutDateQiuzuServlet?nowpage=${currentpage+1}"><font size="2">下一頁</font></a></td> <td align="center"><a href="OutDateQiuzuServlet?nowpage=${countpage}"><font size="2">尾頁</font></a></td> </tr> </table> </form> </body> </html>
文章結束給大家分享下程序員的一些笑話語錄: 雅虎最擅長的不是開通新業務,是關閉舊業務。
--------------------------------- 原創文章 By
刪除和信息
---------------------------------