收藏 分享(赏)

数据库系统应用与开发--实验七.doc

上传人:精品资料 文档编号:11062723 上传时间:2020-02-05 格式:DOC 页数:13 大小:1.10MB
下载 相关 举报
数据库系统应用与开发--实验七.doc_第1页
第1页 / 共13页
数据库系统应用与开发--实验七.doc_第2页
第2页 / 共13页
数据库系统应用与开发--实验七.doc_第3页
第3页 / 共13页
数据库系统应用与开发--实验七.doc_第4页
第4页 / 共13页
数据库系统应用与开发--实验七.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、实验 JDBC 进阶( 3)一、相关知识点1、JDBC 基本概念2、主从关系,分页查询二、实验目的:理解分页查询的概念和处理方法三、实验内容:数据准备:用上次实验中的方法,生成 1000 个读者和图书;1、 改造读者模块,在提取读者的同时,提取其未归还的图书信息第一步:通过程序增加一些借阅纪录第二步:改造读者 javabean,使之包括借阅的图书信息第三步:改造读者提取方法,同时提取未归还图书;第四步:修改图书借阅 ui 类并进行测试【实验结果与分析】A、 javabean 类代码。private List beanBook;public List getBeanBook() return b

2、eanBook;public void setBeanBook(List beanBook) this.beanBook = beanBook;B、 给出改造后 ReaderManager 类的方法代码。List result1=new ArrayList();String sql1=“select a.barcode,a.bookname,a.pubid,a.price,a.state from beanbook a ,beanbooklendrecord b where b.readerid=“+rs.getString(1)+“ and b.bookBarcode=a.barcode a

3、nd b.returnDate is null“;java.sql.PreparedStatement pst1=conn.prepareStatement(sql1);java.sql.ResultSet rs1=pst1.executeQuery();while(rs1.next()BeanBook b=new BeanBook();b.setBarcode(rs1.getString(1);b.setBookname(rs1.getString(2);b.setPubid(rs1.getString(3);b.setPrice(rs1.getFloat(4);b.setState(rs1

4、.getString(5);result1.add(b);r.setBeanBook(result1);result.add(r);在图书管理系统借几本书修改 ui 类的地方:1private Object tblTitle=“读者证号“, “姓名“, “类别“,“ 借阅限额“,“状态“ ,“未归还图书信息“;2tblData =new Objectreaders.size()6;3List t2 = readers.get(i).getBeanBook();String imf=“;if(t2!=null)for(int j=0;j beanReader;用 set 与 get 创建方法B.

5、 给出改造后 ReaderManager 类的方法代码。public PageData searchReaderPage(String keyword,int readerTypeId,PageData page)throws BaseException/加一个page类Connection conn=null;try conn=DBUtil.getConnection();String sql=“select count(*) from BeanReader r,BeanReaderType rt where r.readerTypeId=rt.readerTypeId“ +“ and re

6、moveDate is null “; / 这个sql 是为了记录总记录数java.sql.PreparedStatement pst=conn.prepareStatement(sql);java.sql.ResultSet rs=pst.executeQuery();if(rs.next()page.setTotalRecordCount(rs.getInt(1); /赋值总记录数page.setPageCount(page.getTotalRecordCount()/page.getPagesize();/赋值总页面数List result1=new ArrayList();String

7、 sql1=“select top “+page.getPagesize()+“ readerid,readerName,r.readerTypeId,r.lendBookLimitted,createDate,creatorUserId,stopDate,stopUserId,rt.readerTypeName“ +“ from BeanReader r,BeanReaderType rt where r.readerTypeId=rt.readerTypeId“ +“ and removeDate is null “;if(page.getPageRecordCount()!=1)sql1

8、+=“ and readerid not in (select top “+(page.getPageRecordCount()-1)*(page.getPagesize()+“ readerid from BeanReader where removeDate is null)“;if(readerTypeId0) sql1+=“ and r.readerTypeId=“+readerTypeId;if(keyword!=null sql1+=“ order by readerid“;java.sql.PreparedStatement pst1=conn.prepareStatement(

9、sql1);if(keyword!=null pst1.setString(2, “%“+keyword+“%“);java.sql.ResultSet rs1=pst1.executeQuery();while(rs1.next()BeanReader r=new BeanReader();r.setReaderid(rs1.getString(1);r.setReaderName(rs1.getString(2);r.setReaderTypeId(rs1.getInt(3);r.setLendBookLimitted(rs1.getInt(4);r.setCreateDate(rs1.g

10、etDate(5);r.setCreatorUserId(rs1.getString(6);r.setStopDate(rs1.getDate(7);r.setStopUserId(rs1.getString(8);r.setReaderTypeName(rs1.getString(9);List result2=new ArrayList();String sql2=“select a.barcode,a.bookname,a.pubid,a.price,a.state from beanbook a ,beanbooklendrecord b where b.readerid=“+rs1.

11、getString(1)+“ and b.bookBarcode=a.barcode and b.returnDate is null“;java.sql.PreparedStatement pst2=conn.prepareStatement(sql2);java.sql.ResultSet rs2=pst2.executeQuery();while(rs2.next()BeanBook b=new BeanBook();b.setBarcode(rs2.getString(1);b.setBookname(rs2.getString(2);b.setPubid(rs2.getString(

12、3);b.setPrice(rs2.getFloat(4);b.setState(rs2.getString(5);result2.add(b);r.setBeanBook(result2);result1.add(r);page.setBeanReader(result1); catch (SQLException e) e.printStackTrace();throw new DbException(e);finallyif(conn!=null)try conn.close(); catch (SQLException e) / TODO Auto-generated catch bl

13、ocke.printStackTrace();return page;给出 ui 类中的修改部分(注:生成表格的方法需做微调)1 . 首先增加 2 个按钮 即上一页,和下一页需要修改 3 个地方第一个是:private Button previous = new Button(“上一页“);private Button next = new Button(“下一页“);如图:第二个是:toolBar.add(previous);toolBar.add(next);如图:第三个是:增加监听器this.previous.addActionListener(this);this.next.addAc

14、tionListener(this);2.对 page 类的一些值进行复制page.setPageRecordCount(1);/初始化当前的数是第一页page.setPagesize(20);/以20个记录为一页注意一定要加中括号 不然会冒错 我也不知道为什么如图:有些值在ReaderManager类的searchReaderPage方法中已经赋值了如图:3.对刷新table的方法进行修改readers=(new ReaderManager().searchReaderPage(this.edtKeyword.getText(), rtId,page).getBeanReader();注意需

15、要在:BeanReaderType类中加private PageData page;变量 顺便加下set与 get的方法。不然BeanReaderType rt=this.readerTypeMap_name.get(rtname);这句话会冒错说searchReaderPage方法有3个形参而readerType什么只有2 个形参不行 我也不是很懂4.最后在actionPerformed方法中加 2个if 当按下上一页或下一页按钮时对当前页值进行修改 再刷新tableelse if(e.getSource()=this.previous)if(page.getPageRecordCount()1)page.setPageRecordCount(page.getPageRecordCount()-1);this.reloadTable();else if(e.getSource()=this.next)if(page.getPageRecordCount()page.getTotalRecordCount()page.setPageRecordCount(page.getPageRecordCount()+1);this.reloadTable();如图:测试:第一页:当按下下一页后:当按下上一页后:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报