java操作数据库:分页查询
直接上。。。。
还是用之前的goods表,增加了一些数据
1、实体类Goods
// 封装数据
public class Goods {
private int gid;
private String gname;
private String gprice;
private String gdate;
public int getGid() {
return gid;
}
public void setGid(int gid) {
this.gid = gid;
}
public String getGname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
public String getGprice() {
return gprice;
}
public void setGprice(String gprice) {
this.gprice = gprice;
}
public String getGdate() {
return gdate;
}
public void setGdate(String gdate) {
this.gdate = gdate;
}
public Goods(int gid, String gname, String gprice, String gdate) {
super();
this.gid = gid;
this.gname = gname;
this.gprice = gprice;
this.gdate = gdate;
}
public Goods() {
super(); }
}
2、DBHelper类
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement; /**
* 获取数据库操作的连接对象
* 关闭数据库操作的各种资源
* @author 晏先政
*
*/
public class DBHelper {
private static final String className = "com.mysql.jdbc.Driver";
private static final String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true";
private static final String uname = "root";
private static final String upass = ""; /**
* 获取数据库连接对象的方法
*/
public static Connection getConn(){
Connection conn = null;
try{
Class.forName(className);
conn = DriverManager.getConnection(url,uname, upass);
} catch(Exception e){
e.printStackTrace();
} return conn;
} /**
* 关闭数据库连接对象
*/
public static void closeConn(Connection conn){
try{
if(conn!=null){
conn.close();
}
} catch(Exception e){
e.printStackTrace();
}
} /**
* 关闭数据库操作对象
*/
public static void closeStmt(Statement stmt){
try{
if(stmt!=null){
stmt.close();
}
} catch(Exception e){
e.printStackTrace();
}
} /**
* 关闭数据库操作对象
*/
public static void closePstmt(PreparedStatement pstmt){
try{
if(pstmt!=null){
pstmt.close();
}
} catch(Exception e){
e.printStackTrace();
}
} /**
* 关闭数据库操作对象
*/
public static void closeRs(ResultSet rs){
try{
if(rs!=null){
rs.close();
}
} catch(Exception e){
e.printStackTrace();
}
}
}
3、实现类GoodsDao:操作数据库进行查询
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; public class GoodsDao {
private Connection conn = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
// 查询当前页的数据
public List<Goods> getListByCurPage(int curPage){
List<Goods> list = new ArrayList<Goods>();
try{
conn = DBHelper.getConn();
int num = (curPage-1)*5;
String sql = "select * from goods limit "+num+",5"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while(rs.next()){
Goods ba = new Goods(rs.getInt("gid"),rs.getString("gname"),rs.getString("gprice"),rs.getString("gdate"));
ba.setGid(rs.getInt("gid"));
list.add(ba);
} } catch(Exception e){
e.printStackTrace();
} finally{
DBHelper.closeRs(rs);
DBHelper.closePstmt(pstmt);
DBHelper.closeConn(conn);
} return list;
} // 查询所有记录的总条数
public int getCount(){
int i = 0;
try{
conn = DBHelper.getConn();
String sql = "select count(*) cnt from goods"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); if(rs.next()){
i = rs.getInt("cnt");
} } catch(Exception e){
e.printStackTrace();
} finally{
DBHelper.closeRs(rs);
DBHelper.closePstmt(pstmt);
DBHelper.closeConn(conn);
}
return i;
}
}
4、展示类GoodsShow
import java.util.List;
import java.util.Scanner; public class GoodsShow { public static void main(String[] args) {
GoodsShow bs = new GoodsShow();
bs.show();
} private Scanner input = new Scanner(System.in);
private GoodsDao dao = new GoodsDao(); int curPage = 1;
List<Goods> list = null;
public void show(){
int rowCount = dao.getCount(); int pageCount = rowCount%5==0?rowCount/5:rowCount/5+1;
list = dao.getListByCurPage(curPage); print(list); System.out.println("首页【F】上一页【P】下一页【N】尾页【L】请选择:");
char choose = input.next().toUpperCase().charAt(0); switch(choose){
case 'F':
curPage = 1;
break;
case 'P':
curPage = curPage -1;
if(curPage<1){
curPage = 1;
}
break;
case 'N':
curPage = curPage +1;
if(curPage>pageCount){
curPage = pageCount;
}
break;
case 'L':
curPage = pageCount;
break;
} show();
} public void print(List<Goods> list){
System.out.println("编号\t商品\t价格\t时间");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).getGid()+"\t"+list.get(i).getGname()+"\t"+list.get(i).getGprice()+"\t"+list.get(i).getGdate());
}
}
}
then。。。。
java操作数据库:分页查询的更多相关文章
- java 分页对象以及数据库分页查询
import java.util.List; public class Pager<T> { private Integer pageSize; private Integer total ...
- JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6134851.html 在开发过程中,经常做的一件事,也是最基本的事,就是从数据库中查询数据,然后在客户端显示出 ...
- MySQL、SqlServer、Oracle三大主流数据库分页查询
在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法.可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应用 ...
- MySQL、SqlServer、Oracle三大主流数据库分页查询 (MySQL分页不能用top,因为不支持)
一. MySQL 数据库 分页查询MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它 ...
- Java操作数据库——手动实现数据库连接池
Java操作数据库——手动实现数据库连接池 摘要:本文主要学习了如何手动实现一个数据库连接池,以及在这基础上的一些改进. 部分内容来自以下博客: https://blog.csdn.net/soonf ...
- Java操作数据库——使用连接池连接数据库
Java操作数据库——使用连接池连接数据库 摘要:本文主要学习了如何使用JDBC连接池连接数据库. 传统方式和连接池方式 传统方式的步骤 使用传统方式在Java中使用JDBC连接数据库,完成一次数据库 ...
- Java操作数据库——在JDBC里使用事务
Java操作数据库——在JDBC里使用事务 摘要:本文主要学习了如何在JDBC里使用事务. 使用Connection的事务控制方法 当JDBC程序向数据库获得一个Connection对象时,默认情况下 ...
- Java操作数据库——使用JDBC连接数据库
Java操作数据库——使用JDBC连接数据库 摘要:本文主要学习了如何使用JDBC连接数据库. 背景 数据持久化 数据持久化就是把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应 ...
- Sqlserver数据库分页查询
Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...
随机推荐
- 自学Python3.6-算法 二分查找算法
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- 测试工作常用SQL查询语句
一.查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>, ...
- MYSQL timestamp NOT NULL插入NULL的报错问题
1. 在开发两个数据库数据同步功能的时候,需要在本地搭建一个本地的数据库作为一个本地库,然后用于同步开发库中的数据.在插入的时候出现了一个问题. 问题描述: 我们每张表中都会存在一个create_ti ...
- poj 1733 Parity game(带权并查集+离散化)
题目链接:http://poj.org/problem?id=1733 题目大意:有一个很长很长含有01的字符串,长度可达1000000000,首先告诉你字符串的长度n,再给一个m,表示给你m条信息, ...
- [BJOI2017]开车
[BJOI2017]开车 直接做要用栈 修改?难以直接维护 统计边的贡献! len*abs(pre)pre表示前缀car-stop 修改时候,整个区间的pre+1或者-1 分块,块内对pre排序并打标 ...
- HDU/HDOJ 2087 剪花布条
KMP裸题 (极限5分钟A题) /** freopen("in.in", "r", stdin); freopen("my.out", &q ...
- JavaScript深入之变量对象
前言 在上篇<javascript深入之执行上下文栈>中讲到,当javascript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution ...
- PHP 生成水印图片
这段时间因工作需要,学习了下用PHP来给背景图上添加公司logo,宣传语之类的图片合并功能.话不多说,直接上代码. <?php public function getImage() { $dat ...
- MySQL经典查询场景
一.设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).用SQL语句创建四个表并完成相关题目. 表结构如下 #建学生信息表 ...
- Python线程状态和全局解释器锁
在刚接触Python的时候时常听到GIL这个词,并且发现这个词经常和Python无法高效的实现多线程划上等号.本着不光要知其然,还要知其所以然的研究态度,博主搜集了各方面的资料,花了一周内几个小时的闲 ...