有时候我们查询数据库表时,但是很多时候表中的记录很多,需要显示出来的话怎么办?这时可以使用分页的方法,就是指定从数据库表的什么位置开始查询显示,以及指定显示的记录数目。

Mysql数据库提供了limit a,b的关键字,a是数据库表的查询起始位置,是个偏移量,b是指定本次查询的记录数目

下面是我的数据表:

数据库的链接类:

package com.tools;
import java.sql.*;
public class DBConnection {
private Connection con;         //定义数据库连接类对象
private PreparedStatement pstm;
private String user="root";      //连接数据库用户名
private String password="123456";        //连接数据库密码
private String driverName="com.mysql.jdbc.Driver";   //数据库驱动
private String url="jdbc:mysql://localhost:3306/shoppingcart";
//连接数据库的URL,后面的是为了防止插入数据 库出现乱码,?useUnicode=true&characterEncoding=UTF-8
//构造函数
public DBConnection(){}
/**创建数据库连接*/
public Connection getCon(){try{Class.forName("com.mysql.jdbc.Driver");}catch(ClassNotFoundException e){System.out.println("加载数据库驱动失败!");e.printStackTrace();}try {con=DriverManager.getConnection(url,user,password);       //获取数据库连接} catch (SQLException e) {System.out.println("创建数据库连接失败!");con=null;e.printStackTrace();}return con;                 //返回数据库连接对象
}
/***@功能:对数据库进行增、删、改、查操作*@参数:sql为SQL语句;params为Object数组,里面存储的是为sql表示的SQL语句中"?"占位符赋值的数据 */public void doPstm(String sql,Object[] params){if(sql!=null&&!sql.equals("")){if(params==null)params=new Object[0];            getCon();if(con!=null){try{        System.out.println(sql);pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);for(int i=0;i<params.length;i++){pstm.setObject(i+1,params[i]);}pstm.execute();}catch(SQLException e){System.out.println("doPstm()方法出错!");e.printStackTrace();}                }           }}  public ResultSet getRs() throws SQLException{return pstm.getResultSet();        }public int getCount() throws SQLException{return pstm.getUpdateCount();        }public void closed(){try{if(pstm!=null)pstm.close();          }catch(SQLException e){System.out.println("关闭pstm对象失败!");e.printStackTrace();}try{if(con!=null){con.close();}}catch(SQLException e){System.out.println("关闭con对象失败!");e.printStackTrace();}}
}

javabean的代码:

package com.beans;public class Book {public static final int PAGE_SIZE=6;//每一页中显示的数目private int bookId;private String name;private String author;private String publisher;private String price;public Book(){}public Book(int bookId, String name,String author,String publisher,String price){this.bookId=bookId;this.name=name;this.author=author;this.publisher=publisher;this.price=price;     }public int getBookId() {return bookId;}public void setBookId(int bookId) {this.bookId = bookId;}public String getName() {return name;}    public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getPublisher() {return publisher;}public void setPublisher(String publisher) {this.publisher = publisher;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}
}

DAO的代码:

package com.Dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.beans.Book;
import com.tools.DBConnection;public class BookDao {DBConnection DB=new DBConnection();//数据库的链接类Connection conn=null;//返回所有图书列表public List<Book> getBookList(){List<Book> list=new ArrayList<Book>();try {conn=DB.getCon();String sql="select * from books";PreparedStatement pstm=conn.prepareStatement(sql);ResultSet rs=pstm.executeQuery();while(rs.next()){Book book=new Book();book.setBookId(rs.getInt(1));book.setName(rs.getString(2));book.setAuthor(rs.getString(3));book.setPublisher(rs.getString(4));book.setPrice(rs.getString(5));list.add(book);}return list;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}//根据图书ID返回这本书的信息public Book getBookById(int bookid){Book book=new Book();try {conn=DB.getCon();String sql="select * from books where BookID=?";PreparedStatement pstm=conn.prepareStatement(sql);pstm.setInt(1, bookid);ResultSet rs=pstm.executeQuery();while(rs.next()){book.setBookId(rs.getInt(1));book.setName(rs.getString(2));book.setAuthor(rs.getString(3));book.setPublisher(rs.getString(4));book.setPrice(rs.getString(5));             }return book;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}          return null;}}

负责分页查询的Servlet代码:

package com.servlets;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.Dao.PageQueryDao;
import com.beans.Book;public class PageQueryServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int currpage=1;//开始时是第一页if(request.getParameter("page")!=null){currpage=Integer.parseInt(request.getParameter("page"));}PageQueryDao pagedao=new PageQueryDao();//查询数据库的daoList<Book> list=pagedao.getPageList(currpage);//查询当前页记录request.setAttribute("list", list); //把记录放在request里边int pages;   //计算查询总页数int count=pagedao.FindCounts();if(count%Book.PAGE_SIZE==0){pages=count/Book.PAGE_SIZE;}else{pages=count/Book.PAGE_SIZE+1;}StringBuffer sb=new StringBuffer();//构建分页条for(int i=1;i<=pages;i++){if(i==currpage){sb.append("『" + i + "』");}else{
              sb.append("<a href='PageQueryServlet?page="+i+"'>"+i+"</a>");//链接到本servlet}sb.append(" ");}request.setAttribute("bar", sb.toString());request.getRequestDispatcher("books.jsp").forward(request, response);    //请求转发  }protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

books.jsp显示:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.util.List"%>
<%@page import="com.beans.Book"%><html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>图书信息列表</title><!--<link rel="stylesheet" type="text/css" href="styles.css">--><style type="text/css">a:link{color:red;text-decoration:none}/*未访问,红色,无下划线*/a:active{color:blue;}/*激活,红色*/a:visited{color:purple;text-decoration:none}/*已访问,紫色,无下划线*/a:hover{color:blue;text-decoration:underline}/*鼠标移动上面,蓝色,下划线*/</style></head><body bgcolor="#98FB98"><table align="center"  ><tr><td align="center" colspan="8" ><h2 style=" font-family:隶书;color:#9A32CD">喵喵网上书店</h2></td></tr><%! int i=1,j=1; %><% List<Book> list=(List<Book>)request.getAttribute("list");%><% for(j=1;j<=2;j++){ %><!--这里的我的工作项目是这样的,也可以循环显示成列表形式,只需要修改下表的循环代码即可--><tr><% for(Book b:list){ if(j==2){if(b.getBookId()<=3||(b.getBookId()>=7&&b.getBookId()<=9)) continue;}                         %>         <td width="100" height="140"><img src="data:images/<%=String.valueOf(b.getBookId()-1) %>.jpg"/></td><td width="160"> <font color="#0000FF">ISDN :<%=b.getBookId() %></font><br><font color="#0000FF"> 书 名:<%=b.getName() %></font><br><font color="#0000FF"> 作 者:<%=b.getAuthor() %></font><br><font color="#0000FF">出 版:<%=b.getPublisher() %></font><br><font color="#0000FF">价 格:<%=b.getPrice() %> </font><br>   <a href="">查看详细信息</a>                           </td> <% if(b.getBookId()%3==0) break; %>                         <%} %>   </tr><%} %>         <tr><td align="right" colspan="8"><%= request.getAttribute("bar") %></td>          </tr></table></body>
</html>

结果;


Java web访问MySql数据库分页查询相关推荐

  1. 使用php从网络访问mysql数据库,使用PHP从web访问mysql数据库

    一. web数据库构架的工作原理 1. 用户由浏览器发出HTTP请求,请求特定的web页面. 2. web服务器接受接收到对特定页面的请求,检索相应文件,并将其传递给php引擎处理. 3. php引擎 ...

  2. Mysql数据库分页查询及优化

    最近遇到个数据库分页查询问题,mysql数据库分页查询默认是升序查询,就是第一页查询的是最先插入的数据,最后一页才是最新插入的数据,弄了个小的数据库表单,记录下我的操作过程,还有优化查询速度的方法. ...

  3. MySQL 数据库 分页查询/聚合查询

    引言 在本篇博客简单介绍一下分页查询以及聚合查询简单操作. 分页查询 在MySQL中,分页查询一般都是使用limit子句实现,limit子句声明如下: SELECT * FROM table LIMI ...

  4. 【mySQL】mysql数据库分页查询讨论专题

    目录 一.limit分页公式.总页数公式 1 limit分页公式 2 总页数公式 二 .Mysql的三种分页方法 1 limit m,n分页语句(低效) 2 limit m语句 (有局限) 三. 查询 ...

  5. 使用PHP从Web访问MySQL数据库

    1.过滤数据 $search = addslashes(trim($_POST['search'])); 2.建立数据库连接 对象风格: @ $db = new mysqli('localhost', ...

  6. MySQL数据库分页查询limit

    1. 分页查询介绍 当数据特别多,一页显示不完,需要一页一页的进行显示,这就是分页查询. 2. 分页查询语法 select * from 表名 limit start,count 说明: limit是 ...

  7. ashx连接mysql_对C#中的web访问mysql数据库的一些知识点进行了整理归纳总结

    基本对比 使用方式 使用场合 优缺点 是否需要安装 需要的dll网址 引用方式 程序内引用 程序初期确定使用MySql,前期添加引用 大多数情况下使用在类文件内,多数使用于aspx,ashx等带有后置 ...

  8. java web mysql备份,Java Web 实现Mysql 数据库备份与还原

    前段时间某某删库事故付出的惨重代价告诉我们: 数据备份的必要性是企业数据管理极其重要的一项工作. 1. Mysql备份与还原命令 备份命令: mysqldump -h127.0.0.1 -uroot ...

  9. PHP——MySQL数据库分页查询

    原理 https://blog.csdn.net/weixin_43272781/article/details/101319460 效果 代码 <!DOCTYPE HTML PUBLIC &q ...

最新文章

  1. java udp tcp协议_【java】TCP和UDP传输协议
  2. 反转字符串/列表、改变递归次数限制、else用法...Python 冷知识(四)
  3. 2017年诺贝尔生理学或医学奖揭晓
  4. 程序员在囧途之做私活小记
  5. 【组合数学】基本计数原则 ( 加法原则 | 乘法原则 )
  6. stringutils_番石榴分配器vs StringUtils
  7. php 数组移除指定健,php删除数组指定键的方法
  8. haddler处理队列 netty_Netty的任务队列的Task的三种使用场景
  9. Android设备上使用WiFinspect抓取网络通讯包
  10. 物尽其用-让推荐系统成为你学习的助手
  11. Dxg——[版本管理工具Git SVN]开发笔记整理分类合集【所有的相关记录,都整理在此】
  12. 税务计算机 试题分析,税务师考试方式、题型、计算器使用规定
  13. 借助Sci-Hub免费下载外文文献
  14. 【DS基础】静态链表
  15. webservice wsimport 报错
  16. 计算机指令的操作码和地址,操作码和地址码
  17. android三星s8底部菜单,【Android】三星Galaxy S8及S8+的屏幕适配
  18. Day07 Scanner 类、 Random 类、 ArrayList 类 6.20
  19. flyingsaucer转换多个html,java - 使用FlyingSaucer将包含阿拉伯字符的HTML页面转换为PDF - 堆栈内存溢出...
  20. Ubuntu18.04更新驱动最完美的方法

热门文章

  1. MQTT数据传输之TCP数据流程
  2. STM32初识——中断初始化过程(by woody)
  3. 打印机更换感光鼓单元k_SOHO打印机基础培训(成像原理)
  4. C++ Primer 5th笔记(chap 19 特殊工具与技术)嵌套类
  5. 面试官:谈谈equals() 和 == 的区别
  6. 【django】配置URLconf
  7. 2021天翼杯 密码官方wp
  8. 基于Redis实现分布式部署单点登录
  9. Python搭建静态web服务器
  10. MySQL知识点复习