数据库应用与开发实验6里有下载地址Word格式文档下载.docx
《数据库应用与开发实验6里有下载地址Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库应用与开发实验6里有下载地址Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
运行图书管理系统,进行各个功能的测试(读者类别管理、读者管理)
【实验结果与分析】
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"
;
fromview_readerwherereaderid=?
"
2、设计图书视图view_book,并修改BookManager类中相关代码。
通过查询分析器建立图书视图,要求视图中包含出版社名称;
改造BookManager类,将其中的连接查询用视图代替。
运行图书管理系统,进行各个功能的测试
createviewview_book
as
selectb.barcode,b.bookname,b.pubid,b.price,b.state,p.publishername
frombeanbookb,beanpublisherpwhereb.pubid=p.pubid
publicclassBookManager{
publicList<
BeanBook>
searchBook(Stringkeyword,StringbookState)throwsBaseException{
List<
result=newArrayList<
();
Connectionconn=null;
try{
conn=DBUtil.getConnection();
//改动处
Stringsql="
"
fromview_bookwherestate='
+bookState+"
'
"
//
if(keyword!
=null&
&
!
.equals(keyword))
sql+="
and(b.booknamelike?
orb.barcodelike?
)"
sql+="
orderbyb.barcode"
java.sql.PreparedStatementpst=conn.prepareStatement(sql);
.equals(keyword)){
pst.setString(1,"
%"
+keyword+"
);
pst.setString(2,"
}
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{
//改动处
fromview_bookwherebarcode=?
pst.setString(1,barcode);
if(rs.next()){
returnb;
returnnull;
3、设计读者借阅情况统计视图view_reader_static,并在BookLendManager类中添加根据读者ID提取其借阅数量的代码。
通过查询分析器建立读者统计视图,要求视图中包含读者ID、读者姓名、借阅数量;
在BookLendManager中添加方法publicintloadReaderLendCount(Stringreaderid)throwsDbException。
并编写其代码
在BookLendManager类中添加main函数,并编写上述方法的测试代码。
进行功能的测试
createviewview_reader_static
selectr.readerid,r.readerName,count(*)AS借阅数量fromBeanReaderr,BeanBookLendRecordrc
wherer.readerid=rc.readeridgroupbyr.readerid,r.readerName
B、给出改造后BookLendManager类的各个方法的代码。
publicstaticintloadReaderLendCount(Stringreaderid)throwsDbException{
inta=0;
select*fromview_reader_staticwherereaderid=?
pst.setString(1,readerid);
a=rs.getInt(3);
returna;
4、索引实验:
完成IndexTest_initData类中的代码,并测试。
完成IndexTest类中的代码,并测试,记录执行结果
通过查询分析器,在BeanBookLendRecord表的readerid上建立索引
第四步:
再次执行IndexTest类,记录执行结果
A、给出两个类的代码和索引建立的代码
B、比较IndexTest类两次执行的结果,并说明索引的作用。
并思考:
如果我们需要经常查询某用户近期借阅的n本图书,请问,应该如何建立索引?
【提示:
多列索引】
5、批量处理:
在PublisherManager中,增加方法
publicvoidcreate1000Publisher1()throwsBaseException
用pareparedStatement添加1000个出版社。
publicvoidcreate1000Publisher2()throwsBaseException
用pareparedStatement,以及批量处理的方式添加1000个出版社。
在PublisherManager的main函数中分别依次调用这两个方法,并输出两个方法的耗时。
(耗时计算,请参考讲义中的批量处理例子)