版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE1【习题11】一、选择题ADDAD二、填空题1、JDBC2、JDBC-ODBC桥接本地API驱动网络协议驱动纯Java本地协议驱动3、getConnection4、Statement对象PreparedStatement对象CallableStatement对象三、简答题1、简述JDBC的基本概念。答:JDBC(JavaDataBaseConnectivity)是一种用于执行SQL语句的JavaAPI,提供了访问和操作关系数据库的方法。它由一组用Java语言编写的类和接口组成,为不同的数据库提供统一的编程接口。JDBCAPI中提供的类和接口,分别用来实现装载数据库的驱动、连接数据库、执行SQL语句、获取并处理查询结果和关闭数据库的连接等。2、如何备份和恢复MySQL数据库?答:数据备份使用MySQLDump命令,直接在命令行下使用该命令:C:\>mysqldump-uroot-pmydb>backdb.sql上述命令的含义是将名为mydb的数据库的内容备份到backdb.sql文件中,包括数据库中的表结构和数据记录。数据恢复使用MySQL命令,也是直接在命令行下使用该命令:C:\>mysql-uroot-pmydb<backdb.sql上述命令的含义是将备份文件backdb.sql中的数据结构和数据记录恢复到名为mydb的数据库中,前提条件是该数据库已经存在。如果数据库不存在,则需要事先创建好。3、简述JDBC访问数据库的一般流程。答:Java应用程序访问和操作数据库的一般步骤如下:=1\*GB3①加载相关的数据库驱动程序。=2\*GB3②与数据库建立连接。=3\*GB3③创建执行对象。=4\*GB3④向数据库发送需要执行的SQL语句。=5\*GB3⑤从数据库接收处理的结果,可对接收的结果进行处理。=6\*GB3⑥关闭数据库。四、编程题1、设计书籍表,包含书籍编号、书籍名称、作者、出版社、出版年份、价格字段,编写数据库访问程序,实现书籍信息的增、删、改、查和显示。createdatabasebook;usebook;createtablebook(idvarchar(50)primarykey,authorvarchar(20),pricefloat,publishedYearint,publishervarchar(50),titlevarchar(20));setnamesgb2312;packagechap11;publicclassBook{ //作者、书名、价格、出版社、出版年份 privateStringid; privateStringauthor; privateStringtitle; privatefloatprice; privateStringpublisher; privateintpublishedYear; publicBook(Stringid,Stringauthor,Stringtitle,floatprice, Stringpublisher,intpublishedYear){ super(); this.id=id; this.author=author; this.title=title; this.price=price; this.publisher=publisher; this.publishedYear=publishedYear; } publicStringgetId(){ returnid; } publicBook(){ super(); //TODOAuto-generatedconstructorstub } publicvoidsetId(Stringid){ this.id=id; } publicStringgetAuthor(){ returnauthor; } publicvoidsetAuthor(Stringauthor){ this.author=author; } publicStringgetTitle(){ returntitle; } publicvoidsetTitle(Stringtitle){ this.title=title; } publicfloatgetPrice(){ returnprice; } publicvoidsetPrice(floatprice){ this.price=price; } publicStringgetPublisher(){ returnpublisher; } publicvoidsetPublisher(Stringpublisher){ this.publisher=publisher; } publicintgetPublishedYear(){ returnpublishedYear; } publicvoidsetPublishedYear(intpublishedYear){ this.publishedYear=publishedYear; } }packagechap11;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassConnectionFactory{ //下述4个静态变量用于保存连接参数 publicstaticStringjdbcDriver="com.mysql.jdbc.Driver"; publicstaticStringjdbcURL="jdbc:mysql://127.0.0.1:3306/book"; publicstaticStringjdbcUser="root"; publicstaticStringjdbcPassword="sa"; //用于保存单例的连接对象,连接对象被保存在threadLocal对象中 privatestaticfinalThreadLocal<Connection>threadLocal=newThreadLocal<Connection>(); //用类中的数据库连接参数,生产数据库连接对象 publicstaticConnectiongetConnection()throwsSQLException, ClassNotFoundException{ Connectionconnection=threadLocal.get();//从threadLocal对象取得连接 if(connection==null){//如果没有得到(原来不存在),则新建一个 Class.forName(jdbcDriver); connection=DriverManager.getConnection(jdbcURL,jdbcUser,jdbcPassword); if(connection.isClosed()){ closeConnection(); } threadLocal.set(connection);//并将新建保存到threadLocal对象 } returnconnection;//返回连接对象(可能是原来已有的,也可能是新建的) } //关闭数据库连接对象 publicstaticvoidcloseConnection(){ try{ Connectionconnection=threadLocal.get();//从threadLocal对象取得连接 threadLocal.set(null); if(connection!=null){ connection.close(); //并关闭它 } }catch(Exceptione){ System.out.println("关闭数据库连接出现异常:"+e.getMessage()); e.printStackTrace(); } }}packagechap11;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql.Statement;importjava.util.HashMap;importjava.util.LinkedList;importjava.util.List;importjava.util.Map;publicclassBaseDAO{ //执行无返回值的SQL语句 publicvoidexecute(Stringsql){ System.out.println(sql);//输出调试信息 try{ Statementstmt=ConnectionFactory.getConnection() .createStatement(); stmt.execute(sql);//执行SQL语句 }catch(Exceptione){ System.out.println(sql+e.getMessage()); }finally{ ConnectionFactory.closeConnection(); } } //执行有返回值的SQL语句(select语句) publicList<Map<String,String>>executeQuery(Stringsql){ System.out.println("2:"+sql);//输出调试信息 List<Map<String,String>>list=newLinkedList<Map<String,String>>(); try{ Statementstmt=ConnectionFactory.getConnection() .createStatement(); ResultSetrset=stmt.executeQuery(sql);//执行SQL语句并取得返回的结果集 ResultSetMetaDatametadata=rset.getMetaData();//取得表的定义信息(列信息) while(rset.next()){ //将每一行记录转换为一个Map Map<String,String>map=newHashMap<String,String>(); for(inti=1;i<=metadata.getColumnCount();i++){ //将每一列转换为一个“字段名-值”的键值对 //字段名全部转换为大写,值全部转换为字符串 map.put(metadata.getColumnName(i).toUpperCase(), rset.getString(i)); } list.add(map);//将Map添加到List中。 } }catch(Exceptione){ System.out.println(e.getMessage()); }finally{ ConnectionFactory.closeConnection(); } returnlist;//返回一个List }}packagechap11;importjava.util.LinkedList;importjava.util.List;importjava.util.Map;publicclassBookDAO{ publicvoidsave(Bookbook){ Stringsql; if(findById(book.getId())==null){//查找该对象 //如果不存在 sql="insertintoBook(id,author,price,publishedYear,publisher,title)values('" +book.getId()+"','" +book.getAuthor()+"'," +book.getPrice()+"," +book.getPublishedYear()+",'" +book.getPublisher()+"','" +book.getTitle()+"')"; }else{ //如果存在 sql="updateBooksetauthor='" +book.getAuthor()+"',price=" +book.getPrice()+",publishedyear=" +book.getPublishedYear()+",publisher='" +book.getPublisher()+"',title='" +book.getTitle()+"'" +"whereid='"+book.getId()+"'"; } BaseDAObaseDAO=newBaseDAO(); //执行SQL语句 baseDAO.execute(sql); } //删除student表示的一行记录 publicvoiddelete(Bookbook){ Stringsql="deletefromBookwhereid='"+book.getId()+"'"; BaseDAObaseDAO=newBaseDAO(); baseDAO.execute(sql); System.out.println(sql); } //通过id的值查找记录,最多只有一条记录。 publicBookfindById(StringbookID){ Stringsql="select*fromBookwhereid='"+bookID+"'"; BaseDAObaseDAO=newBaseDAO(); List<Map<String,String>>list=baseDAO.executeQuery(sql);//返回一个List if(list!=null&&!list.isEmpty()){ Map<String,String>map=list.get(0);//最多只有一个元素,转换为Book对象 returnmap2Book(map); } returnnull; } //通过条件子句查找记录,可有多条记录。 publicList<Book>findByWhereClause(StringwhereClause){ Stringsql="select*fromBook"+whereClause; BaseDAObaseDAO=newBaseDAO(); List<Map<String,String>>list=baseDAO.executeQuery(sql);//返回一个List System.out.println("sqlxm:"+sql); System.out.println(list.size()); List<Book>book=newLinkedList<Book>(); for(Map<String,String>map:list){//有多个元素,转换为Student对象的List Bookemp=map2Book(map); book.add(emp); } returnbook; } //查找所有记录,可有多条记录。 publicList<Book>findAll(){ returnfindByWhereClause(""); } //将Map表示的student表的一行记录转换为Student对象 //该Map是由BaseDAO.executeQuery返回的List中的元素 privateBookmap2Book(Map<String,String>map){ Bookbook=newBook(); book.setId(map.get("ID"));//注意数据类型 book.setAuthor(map.get("AUTHOR"));//注意列名改为大写 book.setPrice(Integer.parseInt(map.get("PRICE"))); book.setPublishedYear(Integer.parseInt(map.get("PUBLISHEDYEAR")));; book.setPublisher(map.get("PUBLISHER")); book.setTitle(map.get("TITLE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校零散食材采购制度
- 上海海事职业技术学院《卫生信息技术基础》2025-2026学年期末试卷
- 乌兰察布职业学院《物流管理学》2025-2026学年期末试卷
- 乌兰察布职业学院《教育学基础》2025-2026学年期末试卷
- 沈阳体育学院《精神病护理学》2025-2026学年期末试卷
- 上海海事职业技术学院《当代中国经济》2025-2026学年期末试卷
- 上海民远职业技术学院《网络舆情与概论》2025-2026学年期末试卷
- 沈阳农业大学《细胞工程学》2025-2026学年期末试卷
- 上海音乐学院《档案学》2025-2026学年期末试卷
- 电力营销员抄表核算考试题目及答案
- 皮蛋瘦肉粥做法课件
- 2024年9月国际中文教师证书笔试真题附答案回忆版
- 2025年全民《乡村振兴战略》知识竞赛题库及含答案
- 2025至2030中国汽车影院行业项目调研及市场前景预测评估报告
- 2024-2025学年广西河池市高一下学期期末考政治试题及答案
- 安全生产标准操作程序(SOP)手册
- 2025年医院护理八项风险评估试题及答案
- JCT2933-2025水泥窑利用生活垃圾预处理可燃物技术规范
- 小儿肠梗阻课件
- 退休前人员谈心谈话内容范文
- 村务监督委员选举会会议记录范文
评论
0/150
提交评论