数据库应用与开发实验6里有下载地址.docx

上传人:b****8 文档编号:9440504 上传时间:2023-02-04 格式:DOCX 页数:14 大小:578.36KB
下载 相关 举报
数据库应用与开发实验6里有下载地址.docx_第1页
第1页 / 共14页
数据库应用与开发实验6里有下载地址.docx_第2页
第2页 / 共14页
数据库应用与开发实验6里有下载地址.docx_第3页
第3页 / 共14页
数据库应用与开发实验6里有下载地址.docx_第4页
第4页 / 共14页
数据库应用与开发实验6里有下载地址.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据库应用与开发实验6里有下载地址.docx

《数据库应用与开发实验6里有下载地址.docx》由会员分享,可在线阅读,更多相关《数据库应用与开发实验6里有下载地址.docx(14页珍藏版)》请在冰豆网上搜索。

数据库应用与开发实验6里有下载地址.docx

数据库应用与开发实验6里有下载地址

实验JDBC进阶

(2)

一、相关知识点

1、JDBC基本概念

2、视图、索引

二、实验目的:

理解视图和索引的概念,并通过视图设计简化程序设计,通过索引设计优化查询性能

三、实验内容:

1、设计读者视图view_reader,并修改readerManager类中相关代码。

第一步:

通过查询分析器建立读者视图,要求视图中包含读者类别名称;

第二步:

改造ReaderManager类,将其中的连接查询用视图代替。

第三步:

运行图书管理系统,进行各个功能的测试(读者类别管理、读者管理)

【实验结果与分析】

A、写出视图创建代码。

createviewview_readeras

selectreaderid,readerName,r.readerTypeId,r.lendBookLimitted,createDate,creatorUserId,stopDate,stopUserId,rt.readerTypeName,r.removeDate

fromBeanReaderr,BeanReaderTypertwherer.readerTypeId=rt.readerTypeId

 

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

Stringsql="select*"+

"fromview_readerwhereremoveDateisnull"+

"andremoveDateisnull";

Stringsql="select*"+

"fromview_readerwherereaderid=?

";

2、设计图书视图view_book,并修改BookManager类中相关代码。

第一步:

通过查询分析器建立图书视图,要求视图中包含出版社名称;

第二步:

改造BookManager类,将其中的连接查询用视图代替。

第三步:

运行图书管理系统,进行各个功能的测试

【实验结果与分析】

A、写出视图创建代码。

createviewview_book

as

selectb.barcode,b.bookname,b.pubid,b.price,b.state,p.publishername

frombeanbookb,beanpublisherpwhereb.pubid=p.pubid

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

 

publicclassBookManager{

publicListsearchBook(Stringkeyword,StringbookState)throwsBaseException{

Listresult=newArrayList();

Connectionconn=null;

try{

conn=DBUtil.getConnection();

//改动处

Stringsql="select*"+

"fromview_bookwherestate='"+bookState+"'";

//

if(keyword!

=null&&!

"".equals(keyword))

sql+="and(b.booknamelike?

orb.barcodelike?

)";

sql+="orderbyb.barcode";

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

if(keyword!

=null&&!

"".equals(keyword)){

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

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

}

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

while(rs.next()){

BeanBookb=newBeanBook();

b.setBarcode(rs.getString

(1));

b.setBookname(rs.getString

(2));

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

b.setPrice(rs.getDouble(4));

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

b.setPubName(rs.getString(6));

result.add(b);

}

}catch(SQLExceptione){

e.printStackTrace();

thrownewDbException(e);

}

finally{

if(conn!

=null)

try{

conn.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

returnresult;

}

 

publicBeanBookloadBook(Stringbarcode)throwsDbException{

Connectionconn=null;

try{

conn=DBUtil.getConnection();

//改动处

Stringsql="select*"+

"fromview_bookwherebarcode=?

";

//

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

pst.setString(1,barcode);

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

if(rs.next()){

BeanBookb=newBeanBook();

b.setBarcode(rs.getString

(1));

b.setBookname(rs.getString

(2));

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

b.setPrice(rs.getDouble(4));

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

b.setPubName(rs.getString(6));

returnb;

}

}catch(SQLExceptione){

e.printStackTrace();

thrownewDbException(e);

}

finally{

if(conn!

=null)

try{

conn.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

returnnull;

}

 

3、设计读者借阅情况统计视图view_reader_static,并在BookLendManager类中添加根据读者ID提取其借阅数量的代码。

第一步:

通过查询分析器建立读者统计视图,要求视图中包含读者ID、读者姓名、借阅数量;

第二步:

在BookLendManager中添加方法publicintloadReaderLendCount(Stringreaderid)throwsDbException。

并编写其代码

第三步:

在BookLendManager类中添加main函数,并编写上述方法的测试代码。

进行功能的测试

【实验结果与分析】

A、写出视图创建代码。

createviewview_reader_static

as

selectr.readerid,r.readerName,count(*)AS借阅数量fromBeanReaderr,BeanBookLendRecordrc

wherer.readerid=rc.readeridgroupbyr.readerid,r.readerName

 

B、给出改造后BookLendManager类的各个方法的代码。

publicstaticintloadReaderLendCount(Stringreaderid)throwsDbException{

Connectionconn=null;

inta=0;

try{

conn=DBUtil.getConnection();

Stringsql="select*fromview_reader_staticwherereaderid=?

";

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

pst.setString(1,readerid);

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

if(rs.next()){

a=rs.getInt(3);

}

}catch(SQLExceptione){

e.printStackTrace();

thrownewDbException(e);

}

finally{

if(conn!

=null)

try{

conn.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

returna;

}

 

4、索引实验:

第一步:

完成IndexTest_initData类中的代码,并测试。

第二步:

完成IndexTest类中的代码,并测试,记录执行结果

第三步:

通过查询分析器,在BeanBookLendRecord表的readerid上建立索引

第四步:

再次执行IndexTest类,记录执行结果

A、给出两个类的代码和索引建立的代码

 

B、比较IndexTest类两次执行的结果,并说明索引的作用。

并思考:

如果我们需要经常查询某用户近期借阅的n本图书,请问,应该如何建立索引?

【提示:

多列索引】

 

5、批量处理:

第一步:

在PublisherManager中,增加方法

publicvoidcreate1000Publisher1()throwsBaseException

用pareparedStatement添加1000个出版社。

第二步:

在PublisherManager中,增加方法

publicvoidcreate1000Publisher2()throwsBaseException

用pareparedStatement,以及批量处理的方式添加1000个出版社。

第三步:

在PublisherManager的main函数中分别依次调用这两个方法,并输出两个方法的耗时。

(耗时计算,请参考讲义中的批量处理例子)

 

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

当前位置:首页 > PPT模板 > 商务科技

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

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