JDBC详解(2)

12.4 listPagedPerson.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.sql.Date" %>
<%@ page import="com.helloben.util.*" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <title>My JSP ‘listPagedPerson.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">
    -->
    <style type="text/css">
        body, td, th, input {
            font-size:12px;
            text-align:center;
        }
    </style>

  </head>

  <body>
    <%
        final int pageSize = 10;
        int pageNum = 1;
        int pageCount = 1;
        int recordCount = 0;

        try {
            pageNum = Integer.parseInt(request.getParameter("pageNum"));
        }
        catch (Exception e){
        }

        Connection conn = null;
        PreparedStatement preStmt = null;
        ResultSet rs = null;

        String sql = null;
        try {
            sql = "select count(*) from tb_person ";

            recordCount = DbManager.getCount(sql);
            pageCount = (recordCount + pageSize - 1) / pageSize;

            int startRecord = (pageNum - 1) * pageSize;

            sql = "select * from tb_person limit ?, ?";

            conn = DbManager.getConnection();
            preStmt = conn.prepareStatement(sql);
            DbManager.setParams(preStmt, startRecord, pageSize);

            rs = preStmt.executeQuery();
    %>
            <form action="operatePerson.jsp" method="get">
                <table bgcolor="#CCCCCC" cellspacing=1 cellpadding=5 width=100%>
                    <tr bgcolor=#DDDDDD>
                        <th></th>
                        <th>ID</th>
                        <th>Name</th>
                        <th>English Name</th>
                        <th>Gender</th>
                        <th>Age</th>
                        <th>Birthday</th>
                        <th>Comment</th>
                        <th>Created Time</th>
                        <th>Operation</th>
                    </tr>
                    <%
                        while (rs.next()){
                            int id = rs.getInt("id");
                            int age = rs.getInt("age");

                            String name = rs.getString("name");
                            String englishName = rs.getString("english_name");
                            String sex = rs.getString("sex");
                            String description = rs.getString("description");

                            Date birthday = rs.getDate("birthday");
                            Timestamp createTime = rs.getTimestamp("create_time");
                    %>
                            <tr bgcolor=#FFFFFF>
                                <td><input type="checkbox" name="id" value="<%= id %>"/></td>
                                <td><%= id %></td>
                                <td><%= name %></td>
                                <td><%= englishName %></td>
                                <td><%= sex %></td>
                                <td><%= age %></td>
                                <td><%= birthday %></td>
                                <td><%= description %></td>
                                <td><%= createTime %></td>
                                <td>
                                    <a href=‘operatePerson.jsp?action=del&id=" + <%= id %> + "‘ onclick=‘delete_Click()‘>Delete</a>
                                    <a href=‘operatePerson.jsp?action=edit&id=" + <%= id %> + "‘>Edit</a>
                                </td>
                            </tr>
                     <%
                        }
                    %>
                </table>
                <table align=right>
                    <tr>
                        <td><%=Pagination.getPagination(pageNum, pageCount,
                                recordCount, request.getRequestURI())%>
                        </td>
                    </tr>
                </table>
                <br />
                <br />
                <br />
                <table align=left>
                    <tr>
                        <td>SQL: <%=sql%></td>
                    </tr>
                </table>
            </form>
    <%
        }
        catch (SQLException e){
            out.println("Exception occurs when execute the SQL of " + sql + ", the message is: " + e.getMessage());
            e.printStackTrace();
        }
        finally {
            if (rs != null)
                rs.close();
            if (preStmt != null)
                preStmt.close();
            if (conn != null)
                conn.close();
        }
    %>
  </body>
</html>

12.5 DbManager.java

package com.helloben.util;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.sql.Types;

import com.mysql.jdbc.Driver;

public class DbManager {

    public static Connection getConnection() throws SQLException {
        return getConnection("databaseWeb", "root", "mysql");
    }

    public static Connection getConnection(String dbName, String userName, String password) throws SQLException {

        String url = "jdbc:mysql://localhost:3306/" + dbName + "?characterEncoding=utf-8";

        DriverManager.registerDriver(new Driver());

        return DriverManager.getConnection(url, userName, password);
    }

    public static void setParams(PreparedStatement preStmt, Object... params) throws SQLException {

        if (params == null || params.length == 0)
            return;

        for (int i = 1; i <= params.length; i++) {
            Object param = params[i - 1];
            if (param == null) {
                preStmt.setNull(i, Types.NULL);
            }
            else if (param instanceof Integer) {
                preStmt.setInt(i, (Integer) param);
            }
            else if (param instanceof String) {
                preStmt.setString(i, (String) param);
            }
            else if (param instanceof Double) {
                preStmt.setDouble(i, (Double) param);
            }
            else if (param instanceof Long) {
                preStmt.setDouble(i, (Long) param);
            }
            else if (param instanceof Timestamp) {
                preStmt.setTimestamp(i, (Timestamp) param);
            }
            else if (param instanceof Boolean) {
                preStmt.setBoolean(i, (Boolean) param);
            }
            else if (param instanceof Date) {
                preStmt.setDate(i, (Date) param);
            }
        }
    }

    public static int executeUpdate(String sql) throws SQLException {
        return executeUpdate(sql, new Object[] {});
    }

    public static int executeUpdate(String sql, Object... params) throws SQLException {

        Connection conn = null;
        PreparedStatement preStmt = null;

        try {
            conn = getConnection();

            preStmt = conn.prepareStatement(sql);

            setParams(preStmt, params);

            return preStmt.executeUpdate();

        }
        finally {
            if (preStmt != null)
                preStmt.close();
            if (conn != null)
                conn.close();
        }
    }

    public static int getCount(String sql) throws SQLException {

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            conn = getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            rs.next();
            return rs.getInt(1);
        }
        finally {
            if (rs != null)
                rs.close();
            if (stmt != null)
                stmt.close();
            if (conn != null)
                conn.close();
        }
    }

}

12.6 Pagination.java

package com.helloben.util;

public class Pagination {

    public static String getPagination(int pageNum, int pageCount,
            int recordCount, String pageUrl) {

        String url = pageUrl.contains("?") ? pageUrl : pageUrl + "?";
        if(!url.endsWith("?") && !url.endsWith("&")){
            url += "&";
        }

        StringBuffer buffer = new StringBuffer();
        buffer.append("第 " + pageNum + "/" + pageCount + " 页 共 " + recordCount + " 记录 ");

        buffer.append(pageNum == 1 ? " 第一页 " : " <a href=‘" + url + "pageNum=1‘>第一页</a> ");
        buffer.append(pageNum == 1 ? " 上一页 " : " <a href=‘" + url + "pageNum=" + (pageNum - 1) + "‘>上一页</a> ");
        buffer.append(pageNum == pageCount ? " 下一页 " : " <a href=‘" + url + "pageNum=" + (pageNum + 1) + "‘>下一页</a> ");
        buffer.append(pageNum == pageCount ? " 最后一页 " : " <a href=‘" + url + "pageNum=" + pageCount + "‘>最后一页</a> ");

        buffer.append(" 到 <input type=‘text‘ ");
        buffer.append("  name=‘helloben_goto_input‘ ");
        buffer.append("  style=‘width:25px; text-align:center; ‘> 页 ");
        buffer.append(" <input type=‘button‘");
        buffer.append("  name=‘helloben_goto_button‘ value=‘Go‘>");

        buffer.append("<script language=‘javascript‘>");
        buffer.append("function helloben_enter(){");
        buffer.append("    if(event.keyCode == 13){");
        buffer.append("        helloben_goto();");
        buffer.append("        return false;");
        buffer.append("    }");
        buffer.append("    return true;");
        buffer.append("} ");
        buffer.append("function helloben_goto(){");
        buffer.append("    var numText = document.getElementsByName(‘helloben_goto_input‘)[0].value;");
        buffer.append("    var num = parseInt(numText, 10);");
        buffer.append("    if(!num){");
        buffer.append("        alert(‘页数必须为数字‘);    ");
        buffer.append("        return;");
        buffer.append("    }");
        buffer.append("    if(num<1 || num>" + pageCount + "){");
        buffer.append("        alert(‘页数必须大于 1,且小于总页数 " + pageCount + " ‘);    ");
        buffer.append("        return;");
        buffer.append("    }");
        buffer.append("    location=‘" + url + "pageNum=‘ + num;");
        buffer.append("}");
        buffer.append("document.getElementsByName(‘helloben_goto_input‘)[0].onkeypress = helloben_enter;");
        buffer.append("document.getElementsByName(‘helloben_goto_button‘)[0].onclick = helloben_goto;");
        buffer.append("</script>");

        return buffer.toString();
    }
}

JDBC详解(2)

时间: 2024-10-11 17:21:08

JDBC详解(2)的相关文章

JDBC详解(2)

1.加载驱动程序. 注册驱动程序有多方法,Class.forName();是一种显式地加载.当一个驱动程序类被Classloader装载后,在溶解的过程中,DriverManager会注册这个驱动类的实例.这个调用是自动发生的,也就是说DriverManager.registerDriver()方法被自动调用了, Class.forName("oracle.jdbc.driver.OracleDriver"); 当然我们也可以直接调用DriverManager.registerDriv

Spring JDBC详解

<Spring JDBC详解> 本文旨在讲述Spring JDBC模块的用法.Spring JDBC模块是Spring框架的基础模块之一. 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.概述 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1)core即核心包,它包含了JDBC的核心功能.此包内有很多重要的类,包括:JdbcTemplate类.SimpleJdbcInsert类,SimpleJdbcCall类,以及NamedP

JDBC详解(3)

12.6 searchPerson.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page import="java.sql.*" %> <%@ page import="java.sql.Date" %> <%@ page import="com.

JDBC 详解(1)

在以java application server应用为主的平台是,JDBC的最高级应用是DataSource的实现, 其它的,JDO,webcache,hibernate等不过是一种封装,所以看数据库应用的性能,主要看据库连结的利用率, 所以,DataSource可以说是J2EE最最重要的应用. 对于主流的数据库,如mysql,ms sqlserver,oracle,从其通用的性能来看,我建议在JAVA平台上应用oracle和mysql, ms sqlserver的数据库在JAVA平台上的性能

J2EE学习篇之--JDBC详解

今天我们来说一下关于JDBC的相关知识,关于JDBC我想大家都不陌生了,而且我记得早就开始使用它了,记得那是大二的时候做课程设计,但是那时候是为了完成任务,所以遇到问题就google,那时候也没有时间去整理,所以这次就来详细说一下关于JDBC的知识 摘要: JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构成的API. J2SE的一部分,由java.sql,javax.sql包组成. 应用程序.JDBC API.数据库驱动及数据库之间的关系

JDBC详解1

JDBC详解1 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中url背下来! 使用DriverManager类来得到Connection对象! ? ? ? 1 什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Ja

JDBC详解系列(二)之加载驱动

---[来自我的CSDN博客](http://blog.csdn.net/weixin_37139197/article/details/78838091)--- ??在JDBC详解系列(一)之流程中,我将数据库的连接分解成了六个步骤. JDBC流程: 第一步:加载Driver类,注册数据库驱动: 第二步:通过DriverManager,使用url,用户名和密码建立连接(Connection): 第三步:通过Connection,使用sql语句打开Statement对象: 第四步:执行语句,将结

JDBC 详解

工作原理流程:装载驱动程序---->获得数据库连接---->使用Statement或PreparedStatement执行SQL语句----> 返回执行的结果---->关闭相关的连接 JDBC 原理浅析一.本节目的:了解JDBC的概念及工作原理写在详解前对JAVA基础知识的回顾:JAVA接口:是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能).通过接口可以实现不相关的类的相

JDBC详解(转)

原文链接:http://blog.csdn.net/cai_xingyun/article/details/41482835 什么是JDBC? Java语言访问数据库的一种规范,是一套API JDBC (JavaDatabase Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库.比如建立数据库连接.执行SQL语句进行数据的存取操作. JDBC规范采用接口和实现分离的思想设计了Jav