版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统应用与开发 - 实验四实验JDBC 基础( 3 )一、相关知识点1、JDBC 基本概念2、JDBC 数据增、删、改,事务控制等二、实验目的:理解 Java 连接数据库的基本概念。理解利用 Statement 对象、 PreparedStatement 对象进行增、删、改操作,理解事务的概念和 JDBC 编程方式。三、实验内容:1、 利用 Statement 对象进行数据添加。第 一 步 : 修 改PublisherManagercreatePublisher 方法,将其中的 insert成用 Statement 对象执行;类 的语言改第二步:运行图书管理系统, 进行添加出版社测试。【
2、实验结果与分析】A、写出替换的代码部分。Connection conn=null;trypubid=conn=DBUtil.String sql=+p.getPubid()+getConnection();select * from BeanPublisher where;/st.setString(1,p.getPubid();if(rs.next()thrownew BusinessException( 出版社编号已经被占用 );rs.close();st.close();sql=select * from BeanPublisher wherepublisherName=+p.getPu
3、blisherName()+;st=conn.createStatement();st.setString(1, p.getPublisherName(); rs=st.executeQuery(sql);if(rs.next()thrownew BusinessException( 出版社名称已经存在 );values(rs.close();st.close();sql=insert into BeanPublisher(pubid,publisherName,address)+p.getPubid()+,+p.getPublisherName()+,+p.getAddress()+ );s
4、t=conn.createStatement();/st.setString(1, p.getPubid();/st.setString(2, p.getPublisherName();/st.setString(3,p.getAddress();st.execute(sql);st.close();catch(SQLException e) e.printStackTrace();thrownew DbException(e);2、 利用 insert 语句添加数据时, 未指定字段值处理。第一步:运行图书管理系统, 打开读者类别管理界面,并尝试添加一个读者类别; 系统将会报一个错误,请分析说
5、明错误原因。reader.Typeid 是主码,不能为空第二步:通过数据库表结构的修改, 解决上述问题。并用同样的方式解决图书借阅功能的bug。打开 企业管理器;打开 beanreadertype 表;打开 设计表;将标识改成是;第三步:如果表结构不修改, 应该如何修改程序,使新增读者类别的 ID 为表中现有数据的最大 ID 值+1。publicvoidcreateReaderType(BeanReaderType rt)if(rt.getReaderTypeName()=nullthrows|BaseException.equals(rt.getReaderTypeName() | rt.g
6、etReaderTypeName().length()20)thrownew BusinessException( 读者类别名称必须是1-20个字);if(rt.getLendBookLimitted()100)thrownew BusinessException( 借阅图书数量必须在0-100之间);Connection conn=null ;tryconn=DBUtil.getConnection();String sql=select * from BeanReaderType wherereaderTypeName=?;pst.setString(1, rt.getReaderType
7、Name();if(rs.next()thrownew BusinessException( 读者类别名称已经被占用);rs.close();pst.close();sql=select max(readerTypeId)from BeanReadertypeinti=1;pst=conn.prepareStatement(sql);rs = pst.executeQuery();/id=rs.getint +1;if(!rs.next()/是否已经有idi=1;elsei+=rs.getInt(1);sql=insert intoBeanReaderType(readerTypeId,rea
8、derTypeName,lendBookLimitted)values(?,?,?);pst=conn.prepareStatement(sql);pst.setInt(1,i);pst.setString(2, rt.getReaderTypeName();pst.setInt(3,rt.getLendBookLimitted();pst.execute();rs.close();pst.close();catch(SQLException e) e.printStackTrace();thrownew DbException(e);finallyif(conn!=null)tryconn.
9、close();catch(SQLException e) /TODO Auto-generated catch blocke.printStackTrace();3、 利用 PreparedStatement 对象进行数据修改。在 SystemUserManager 类中,新建一个modifyUserName方法,实现用户名称( username 字段)的修改功能。并修改其 main 函数,将 admin 用户的名称改为: 超级管理员。【实验结果与分析】A、请提供方法代码和main 函数代码。publicvoidmodifyUserName(String username)throwsBas
10、eExceptionConnection conn=null;tryconn=DBUtil.getConnection();String sql =update beansystemuser set username =+username+ where userid=admin;intrs = st.executeUpdate(sql);catch(SQLException e) e.printStackTrace();thrownew DbException(e);finallyif(conn!=null)tryconn.close();catch(SQLException e) /TODO
11、 Auto-generated catch blocke.printStackTrace();publicstaticvoidmain(String args)BeanSystemUser user=new BeanSystemUser();user.setUserid(admin);user.setUsername( 系统管理员 );user.setUsertype(管理员);trynew SystemUserManager().modifyUserName(catch(BaseException e) 超级管理员 );TODO Auto-generated catch block e.pr
12、intStackTrace();B、思考:如果上述方法的返回值为布尔类型,即如果成功修改了用户名称,则返回true ,如果用户不存在或修改失败返回false。应该如何完善代码。提示:主要 statement 或 PreparedStatement 对象的execute 方法和 executeUpdate 方法的区别。publicstaticvoidmain(String args)BeanSystemUser user=new BeanSystemUser();user.setUserid(admin);user.setUsername( 系统管理员 );user.setUsertype(管理
13、员);trynew SystemUserManager().modifyUserName(catch(BaseException e) 超级管理员1 );TODO Auto-generated catch block e.printStackTrace();publicvoidmodifyUserName(String username)throwsBaseExceptionConnection conn=null;tryconn=DBUtil.getConnection();String sql =update beansystemuser set username =+username+
14、where userid=admin;booleanrs = st.execute(sql);if(rs =true)System.out .print(ok);elseSystem.out .print(no);catch(SQLException e) e.printStackTrace();thrownew DbException(e);finallyif(conn!=null)tryconn.close();catch(SQLException e) TODO Auto-generated catch block e.printStackTrace();4、 Delete 语句的执行。
15、修改用户管理类中的用户删除方法,用删除数据库表中数据的形式代替现有软删除模式。【实验结果与分析】A、修改后的 sql 语句部分是。sql=deleteBeanSystemUserwhereuserid=?;/deleteBeanSystemUser where userID=001B、如果对删除函数进行限制,要求不能删除已经有过借阅操作的用户。应如何修改代码。提示:可参考读者管理类中的读者类别删除方法。publicvoiddeleteUser(String userid)throwsBaseExceptionConnection conn=null;tryconn=DBUtil.getConn
16、ection();String sql=select removeDate from BeanSystemUser whereuserid=?;pst.setString(1,userid);if(!rs.next()thrownew BusinessException( 登陆账号不if(rs.getDate(1)!=null)thrownew BusinessException(存在); 该账号已经被删除 );rs.close();pst.close();sql=select * from BeanBookLendRecord wherelendOperUserid=?;pst=conn.p
17、repareStatement(sql);pst.setString(1,userid);rs=pst.executeQuery();if(!rs.next()sql=delete BeanSystemUser where userID=?;pst=conn.prepareStatement(sql);pst.setString(1, userid);pst.execute();pst.close();elsethrownew BusinessException( 该账号已有借阅信息, 不能删除 );catch(SQLException e) e.printStackTrace();throw
18、new DbException(e);finallyif(conn!=null)tryconn.close();catch(SQLException e) TODO Auto-generated catch block e.printStackTrace();5、在数据库中建立一张 BeanBookLendRecord_backup 表,用于保存已经归还图书的借阅记录。其表结构与BeanBookLendRecord表完全一致。要求在借阅管理类中,增加方法,实现已经归还数据的备份功能(备份完成后,在原表中删除备份成功的数据)。提示:注意事务控制。【实验结果与分析】请提供备份表的建表语句selec
19、t * into BeanBookLendRecord_backup from BeanBookLendRecord请提供备份函数代码publicvoida()null;trycon = DBUtil.getConnection();Stringsql= insert intoBeanBookLendRecord_backupfrom BeanBookLendRecord;sql=delete from BeanBookLendRecord;st=con.createStatement();rs=st.executeQuery(sql); catch(SQLException e)select
20、*e.printStackTrace();finallyif( con !=null)trycon.close();catch(SQLException e)e.printStackTrace();6、 如果需要记录图书的入库时间 (需要包含时分秒),应如何修改数据库表结构和相关代码?【实验结果与分析】在 bookbeak 中添加: localdatepublicvoidcreateBook(BeanBook b)throwsBaseExceptionif(b.getBarcode()=null|b.getBarcode().length()20)thrownew BusinessException( .equals(b.getBarcode() | 条码必须是1-20 个字 );if(b.getBookname()=null|b.getBookname().length()50)thrownew BusinessException( .equals(b.getBookname() | 图书名称必须是1-50个字);Connection co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年农场直供食材合同协议
- 2026年垃圾分类设备技术支持合同
- 2026年餐饮门店收益分成合同
- 管道维修合同2026年违约责任协议
- 山岭承包合同
- 现代药物制剂技术发展与应用
- 《信息技术基础(上册)》课件 模块二课题三
- 妈妈培训班课件
- 天津企业负责人安全培训课件
- 安全培训讲座简讯课件
- 浅谈现代步行街的改造
- 2026年包头轻工职业技术学院单招职业适应性测试题库附答案
- 2025至2030中国应急行业市场深度分析及发展趋势与行业项目调研及市场前景预测评估报告
- 3D技术介绍及应用
- 基于多因素分析的新生儿重症监护室患儿用药系统风险评价模型构建与实证研究
- 2025新能源光伏、风电发电工程施工质量验收规程
- JJF 2287-2025 测量水池声学特性校准规范(相关函数法)
- 2025年江苏省职业院校技能大赛中职组(安全保卫)考试题库(含答案)
- 财务岗位离职交接清单模版
- 光伏电站试运行与交付标准指南
- 《车辆越野能力分级与评价体系》征求意见稿
评论
0/150
提交评论