• JDBC结合JSP使用(2)


    5. 删除数据

    在删除数据的时候,需要指定删除条件,否则会把数据库表中的数据全部删除。在JSP页面中获得删除条件以后,调用JDBC的删除条件,把数据库表中的数据删除。删除操作的JSP页面代码如下:

    delete.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
    <%@ page import="java.sql.*" %>
    <%@page import="java.sql.Connection"%>
    <%@page import="java.sql.PreparedStatement"%>
    <%@page import="java.sql.ResultSet"%>
    <%@page import="java.sql.DriverManager"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'delete.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <body>
        <form action="" method="post">
            <label>请输入要删除的部门id:</label><br/><br/>
            <input type="text" name="d_id"/><br/><br/>
            <input type="submit" value="删除"/>
        </form>
      </body>
      <%
          Connection con = null;
          PreparedStatement ps = null;
    //      ResultSet rs = null;
          try{
              int d_id = 0;
              d_id = Integer.parseInt(request.getParameter("d_id"));
              Class.forName("com.mysql.jdbc.Driver");
              System.out.println("数据库驱动创建成功!");
              con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bank","root","1234");
              System.out.println("数据库连接成功!");
              String sql = "delete from dept where d_id=?";
              ps = con.prepareStatement(sql);
              ps.setInt(1,d_id);
              ps.executeUpdate();
              out.println("删除成功!");
              }catch (Exception e){
                  e.printStackTrace();
              }
       %>
    </html>

    程序运行界面如下:

    6. 分页显示

    当数据量很多的时候,一页显示不完,这个时候就需要用到分页显示。分页显示数据的时候,如果当前的页是第一页,【上一页】超链接是不可单击状态;如果当前页是最后一页,【下一页】超链接是不可单击状态。分页显示的所有代码都写在JSP文件中,代码如下:

    showAllByPage.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@  page import="com.cn.vo.*" %>
    <%@  page import="java.sql.*" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'showAllByPage.jsp' starting page</title>
      </head>
      <%
          ResultSet rs = null;
            PreparedStatement pstmt =null;
            Connection conn = null;
            List<DeptVo> list = new ArrayList<DeptVo>();
            try {
            String page1 = request.getParameter("page");//获得页面传递过来的page值赋值给page1
            int page2 =1;
            if(page1 != null){
            //如果页面传递过来的page值存在,则把该page1赋值给page2变量
                page2 = Integer.parseInt(page1);
            }
            request.setAttribute("page2", page2);
                Class.forName("com.mysql.jdbc.Driver" );//创建数据库驱动
            //连接数据库
            conn = 
            DriverManager.getConnection("jdbc:mysql://localhost:3306/bank","root","1234");
            //分页查询的SQL语句,每页显示5条记录
                String sql = "select * from dept order by id desc limit ?,5";
                pstmt = conn.prepareStatement(sql);
                pstmt.setInt(1, page2);
                rs = pstmt.executeQuery();
                while(rs.next()){
                    DeptVo deptVo = new DeptVo();
                    //    把各属性放入CarsVo对象中
                    deptVo.setId(rs.getString("id"));
                    deptVo.setAddress(rs.getString("address"));
                    deptVo.setD_name(rs.getString("d_name"));
                    deptVo.setEmpnumber(rs.getInt("empnumber"));
                    deptVo.setD_id(rs.getInt("d_id"));
                    
                    list.add(deptVo);//把CarsVo对象放入集合中
                    request.setAttribute("list", list);
                }
                int count =0;//声明一个count变量,用于存储记录数
                int maxpage = 0;//声明一个maxpage变量,原来表示最大页数
                Statement stmt = conn.createStatement();
                String sql1 ="select count(*) from dept";//查询总记录数的SQL语句
                
                rs = stmt.executeQuery(sql1);
                
                while (rs.next()) {
                    count = rs.getInt(1);//如果结果集存在,记录数初始化值为1
                }
                maxpage = (count+4)/5;//最大页数等于总记录条数加上4,再除以5
                request.setAttribute("maxpage", maxpage);
            } catch (SQLException e) {
                e.printStackTrace();
            }
       %>
      <body>
        <table border="1" align="center" width="70%">
            <tr>
                <td>部门编号</td>
                <td>部门地址</td>
                <td>部门人数</td>
                <td>部门名称</td>
                <td>部门id</td>
            </tr>
            <c:forEach items="${list}" var="list">
            <tr>
                <td>${list.id }</td>
                <td>${list.address }</td>
                <td>${list.empnumber }</td>
                <td>${list.d_name }</td>
                <td>${list.d_id }</td>
            </tr>
            </c:forEach>
        </table>
        <div align="center">
            
            <a href="?page=1">首页</a>
            <c:if test="${page2 ==1}">上一页</c:if>
            <c:if test="${page2 > 1}"><a href="?page=${page2 -1 }">上一页</a></c:if>
            <c:if test="${page2 == maxpage}">下一页</c:if>
            <c:if test="${page2 < maxpage}"><a href="?page=${page2 +1 }">下一页</a></c:if>
            <a href="?page=${maxpage }">末页</a>
        </div>
      </body>
    </html>

    上述代码中,分页显示设置成每页显示5条记录,默认的页数为第一页,也就是说第一次访问时,看到的是第一页的数据,页面效果如下图所示:

  • 相关阅读:
    python学习笔记七--数据操作符
    ggplot2入门与进阶(下)
    ggplot2入门与进阶(上)
    ggplot2绘制Excel所有图
    机器学习中的数学-强大的矩阵奇异值分解(SVD)及其应用
    奇异值分解(SVD)原理详解及推导
    玩深度学习选哪块英伟达 GPU?有性价比排名还不够!
    深度学习主机攒机小记
    日志分析方法概述 & Web日志挖掘分析的方法
    python中matplotlib的颜色及线条控制
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4345683.html
Copyright © 2020-2023  润新知