数据库系统应用与开发实验七资料讲解.docx

上传人:b****8 文档编号:9905185 上传时间:2023-02-07 格式:DOCX 页数:16 大小:762.56KB
下载 相关 举报
数据库系统应用与开发实验七资料讲解.docx_第1页
第1页 / 共16页
数据库系统应用与开发实验七资料讲解.docx_第2页
第2页 / 共16页
数据库系统应用与开发实验七资料讲解.docx_第3页
第3页 / 共16页
数据库系统应用与开发实验七资料讲解.docx_第4页
第4页 / 共16页
数据库系统应用与开发实验七资料讲解.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数据库系统应用与开发实验七资料讲解.docx

《数据库系统应用与开发实验七资料讲解.docx》由会员分享,可在线阅读,更多相关《数据库系统应用与开发实验七资料讲解.docx(16页珍藏版)》请在冰豆网上搜索。

数据库系统应用与开发实验七资料讲解.docx

数据库系统应用与开发实验七资料讲解

 

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

实验JDBC进阶(3)

一、相关知识点

1、JDBC基本概念

2、主从关系,分页查询

二、实验目的:

理解分页查询的概念和处理方法

三、实验内容:

数据准备:

用上次实验中的方法,生成1000个读者和图书;

1、改造读者模块,在提取读者的同时,提取其未归还的图书信息

第一步:

通过程序增加一些借阅纪录

第二步:

改造读者javabean,使之包括借阅的图书信息

第三步:

改造读者提取方法,同时提取未归还图书;

第四步:

修改图书借阅ui类并进行测试

【实验结果与分析】

A、javabean类代码。

privateListbeanBook;

publicListgetBeanBook(){

returnbeanBook;

}

publicvoidsetBeanBook(ListbeanBook){

this.beanBook=beanBook;

}

B、给出改造后ReaderManager类的方法代码。

Listresult1=newArrayList();

Stringsql1="selecta.barcode,a.bookname,a.pubid,a.price,a.statefrombeanbooka,beanbooklendrecordbwhereb.readerid='"+rs.getString

(1)+"'andb.bookBarcode=a.barcodeandb.returnDateisnull";

java.sql.PreparedStatementpst1=conn.prepareStatement(sql1);

java.sql.ResultSetrs1=pst1.executeQuery();

while(rs1.next())

{

BeanBookb=newBeanBook();

b.setBarcode(rs1.getString

(1));

b.setBookname(rs1.getString

(2));

b.setPubid(rs1.getString(3));

b.setPrice(rs1.getFloat(4));

b.setState(rs1.getString(5));

result1.add(b);

}

r.setBeanBook(result1);

result.add(r);

在图书管理系统借几本书

修改ui类的地方:

1.privateObjecttblTitle[]={"读者证号","姓名","类别","借阅限额","状态","未归还图书信息"};

2.tblData=newObject[readers.size()][6];

3.Listt2=readers.get(i).getBeanBook();

Stringimf="";

if(t2!

=null)

{

for(intj=0;j

{

imf=imf+"条形码:

"+t2.get(j).getBarcode()+"书名:

"+t2.get(j).getBookname()+

"产商id:

"+t2.get(j).getPubid()+"价格"+t2.get(j).getPrice()+"状况:

"+t2.get(j).getState();

}

}

tblData[i][5]=imf;

测试:

2、改造读者管理模块,将读者列表页面改造成分页查询方式。

第一步:

第二步:

自行设计PageData类,用于存放分页数据

第三步:

改造ReaderManager类,将其中的查询读者方法改造成分页查询。

第四步:

修改ui类,增加上一页、下一页按钮,实现读者的分页查询,要求每页20人

【实验结果与分析】

A.PageData类代码。

publicclassPageData{

privateinttotalRecordCount;

privateintpageCount;

privateintpagesize;

privateintpageRecordCount;

privateListbeanReader;

用set与get创建方法

B.给出改造后ReaderManager类的方法代码。

publicPageDatasearchReaderPage(Stringkeyword,intreaderTypeId,PageDatapage)throwsBaseException{

//加一个page类

Connectionconn=null;

try{

conn=DBUtil.getConnection();

Stringsql="selectcount(*)fromBeanReaderr,BeanReaderTypertwherer.readerTypeId=rt.readerTypeId"+

"andremoveDateisnull";//这个sql是为了记录总记录数

java.sql.PreparedStatementpst=conn.prepareStatement(sql);

java.sql.ResultSetrs=pst.executeQuery();

if(rs.next())

page.setTotalRecordCount(rs.getInt

(1));//赋值总记录数

page.setPageCount(page.getTotalRecordCount()/page.getPagesize());//赋值总页面数

Listresult1=newArrayList();

Stringsql1="selecttop"+page.getPagesize()+"readerid,readerName,r.readerTypeId,r.lendBookLimitted,createDate,creatorUserId,stopDate,stopUserId,rt.readerTypeName"+

"fromBeanReaderr,BeanReaderTypertwherer.readerTypeId=rt.readerTypeId"+

"andremoveDateisnull";

if(page.getPageRecordCount()!

=1)

sql1+="andreaderidnotin(selecttop"+(page.getPageRecordCount()-1)*(page.getPagesize())+"readeridfromBeanReaderwhereremoveDateisnull)";

if(readerTypeId>0)sql1+="andr.readerTypeId="+readerTypeId;

if(keyword!

=null&&!

"".equals(keyword))

sql1+="and(readeridlike?

orreaderNamelike?

)";

sql1+="orderbyreaderid";

java.sql.PreparedStatementpst1=conn.prepareStatement(sql1);

if(keyword!

=null&&!

"".equals(keyword)){

pst1.setString(1,"%"+keyword+"%");

pst1.setString(2,"%"+keyword+"%");

}

java.sql.ResultSetrs1=pst1.executeQuery();

while(rs1.next()){

BeanReaderr=newBeanReader();

r.setReaderid(rs1.getString

(1));

r.setReaderName(rs1.getString

(2));

r.setReaderTypeId(rs1.getInt(3));

r.setLendBookLimitted(rs1.getInt(4));

r.setCreateDate(rs1.getDate(5));

r.setCreatorUserId(rs1.getString(6));

r.setStopDate(rs1.getDate(7));

r.setStopUserId(rs1.getString(8));

r.setReaderTypeName(rs1.getString(9));

Listresult2=newArrayList();

Stringsql2="selecta.barcode,a.bookname,a.pubid,a.price,a.statefrombeanbooka,beanbooklendrecordbwhereb.readerid='"+rs1.getString

(1)+"'andb.bookBarcode=a.barcodeandb.returnDateisnull";

java.sql.PreparedStatementpst2=conn.prepareStatement(sql2);

java.sql.ResultSetrs2=pst2.executeQuery();

while(rs2.next())

{

BeanBookb=newBeanBook();

b.setBarcode(rs2.getString

(1));

b.setBookname(rs2.getString

(2));

b.setPubid(rs2.getString(3));

b.setPrice(rs2.getFloat(4));

b.setState(rs2.getString(5));

result2.add(b);

}

r.setBeanBook(result2);

result1.add(r);

}

page.setBeanReader(result1);

}catch(SQLExceptione){

e.printStackTrace();

thrownewDbException(e);

}

finally{

if(conn!

=null)

try{

conn.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

returnpage;

}

给出ui类中的修改部分(注:

生成表格的方法需做微调)

1.首先增加2个按钮即上一页,和下一页

需要修改3个地方

第一个是:

privateButtonprevious=newButton("上一页");

privateButtonnext=newButton("下一页");

如图:

第二个是:

toolBar.add(previous);

toolBar.add(next);

如图:

第三个是:

增加监听器

this.previous.addActionListener(this);

this.next.addActionListener(this);

2.对page类的一些值进行复制

{

page.setPageRecordCount

(1);//初始化当前的数是第一页

page.setPagesize(20);//以20个记录为一页

}

注意一定要加中括号不然会冒错我也不知道为什么

如图:

有些值在ReaderManager类的searchReaderPage方法中已经赋值了

如图:

3.对刷新table的方法进行修改

readers=(newReaderManager()).searchReaderPage(this.edtKeyword.getText(),rtId,page).getBeanReader();

注意需要在:

BeanReaderType类中加privatePageDatapage;变量顺便加下set与get的方法。

不然BeanReaderTypert=this.readerTypeMap_name.get(rtname);这句话会冒错说searchReaderPage方法有3个形参而readerType什么只有2个形参不行我也不是很懂

4.最后在actionPerformed方法中加2个if当按下上一页或下一页按钮时对当前页值进行修改再刷新table

elseif(e.getSource()==this.previous){

if(page.getPageRecordCount()>1){

page.setPageRecordCount(page.getPageRecordCount()-1);

this.reloadTable();

}

}

elseif(e.getSource()==this.next){

if(page.getPageRecordCount()

page.setPageRecordCount(page.getPageRecordCount()+1);

this.reloadTable();

}

如图:

测试:

第一页:

当按下下一页后:

当按下上一页后:

 

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

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1