ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:21.82KB ,
资源ID:3743988      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3743988.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(关于优化SQL里面的图书优化最后附有完整代码和详细解释.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

关于优化SQL里面的图书优化最后附有完整代码和详细解释.docx

1、关于优化SQL里面的图书优化最后附有完整代码和详细解释关于优化SQL里面的图书管理系统(内附完整代码和详解)首先新增两个功能:模糊查询和借书还书功能1模糊查询和简单查询差不多。唯一差的就是在查询select * from biao where name = like ;多了百分号。2 借书功能。先获取图书的编号,然后给是否借出那一栏赋值“是”,这样用select count(*)from 去查询的时候就可以返回个1或者0,1说明编号和“是”匹配,就是说编号为“”的图书已经被借走了。先存储数据 然后跳转error.jsp界面让他过几天来借书,如果是0,说明编号和“是”不匹配。编号一定有,就说明“

2、是”不对,那就只有“否”了。这样跳转到查询界面取出数据,修改参数就好。言归正传,开始优化功能。 1首先是链接数据库的优化,我用的是自己电脑里面的SQL数据库。所以用户名了密码了都一样,可以用private static final String 去封装。比如:private static final String driverName = com.mysql.jdbc.Driver; private static final String userName=root; private static final String userPasswd=123456; private static f

3、inal String dbName=xueshenbiao; private static final String tableName=tongxunlv;2连接数据库方面的优化:public Statement getDbStatement() String url=jdbc:mysql:/localhost/+dbName+?user=+userName+&password=+userPasswd; Statement statement = null; try Class.forName(com.mysql.jdbc.Driver).newInstance(); java.sql.C

4、onnection connection=DriverManager.getConnection(url); statement = connection.createStatement(); catch(Exception e) e.printStackTrace(); return statement; public Statement getDbStatement()中statement的意思是:3查询语句的优化因为查询语句查询到的是一个单子。而不是简单的一天数据。所以要用集合进行包含 Public List doQuery(String sql) List qw = new Array

5、List(); try ResultSet rs = getDbStatement().executeQuery(sql); while(rs.next()/循环操作 shuxing a = new shuxing(); String bookNO = rs.getString(1); String bookName = rs.getString(2); String author = rs.getString(3); String press = rs.getString(4); String isborrow = rs.getString(5); String borrowDate = r

6、s.getString(6); String backDate = rs.getString(7); a.setBookNO(bookNO); a.setBookName(bookName); a.setAuthor(author); a.setPress(press); a.setIsborrow(isborrow); a.setBorrowDate(borrowDate); a.setBackDate(backDate); qw.add(a); catch(Exception e) e.printStackTrace(); return qw; ResultSet rs =getDbSta

7、tement().executeQuery(sql);意思是:4之后是删除修改增加的语句优化,因为他们返回的都是几条几条数据所以用INT进行定义public int doUpdate(String sql) int result = 0; try getDbStatement().executeUpdate(sql); catch(Exception e) e.printStackTrace(); return result; 5修改的时候需要查询需要修改的那条数据的具体内容需要进行单条数据的查询。和总的差不多。但是他返回的不是一条不是一个集合。而是一条完整数据,用shuxing(分装包里面类

8、的名字)去定义public shuxing doApp(String sql) shuxing a1 = new shuxing(); try ResultSet rs = getDbStatement().executeQuery(sql); while(rs.next() String bookNO= rs.getString(1); String bookName = rs.getString(2); String author = rs.getString(3); String press = rs.getString(4); String isborrow = rs.getStrin

9、g(5); String borrowDate = rs.getString(6); String backDate = rs.getString(7); a1.setBookNO(bookNO); a1.setBookName(bookName); a1.setAuthor(author); a1.setPress(press); a1.setIsborrow(isborrow); a1.setBorrowDate(borrowDate); a1.setBackDate(backDate); catch(Exception e) e.printStackTrace(); return a1;

10、4对于接收的属性的优化比如要接收什么图书编号了出版社什么的。每次都写有点麻烦所以就也封装下因为封装的也是个数据类型所以public shuxing getBook(HttpServletRequest request) /接收book的所有属性参数,并封装,由于参数都是从request中获取,所以以HttpServletRequest作为参数 shuxing bk = new shuxing(); String bookNO = request.getParameter(bookNO); bookNO = bookNO=null?:bookNO.trim(); bk.setBookNO(boo

11、kNO);/封装图书编号 String bookName = request.getParameter(bookName); bookName = bookName = null?:bookName.trim(); bk.setBookName(bookName);/封装图书名称 String author = request.getParameter(author); author = author = null?:author.trim(); bk.setAuthor(author);/封装作者 String press = request.getParameter(press); pre

12、ss = press = null?:press.trim(); bk.setPress(press);/封装出版社 String isborrow = request.getParameter(isborrow); isborrow = isborrow = null?:isborrow.trim(); bk.setIsborrow(isborrow);/封装是否借出 String borrowDate = request.getParameter(borrowDate); borrowDate = borrowDate = null?:borrowDate.trim(); bk.setBo

13、rrowDate(borrowDate);/封装借出时间 String backDate = request.getParameter(backDate); backDate = backDate = null?:backDate.trim(); bk.setBackDate(backDate);/封装归还时间 return bk; 之所以和之前封装的不同,是因为他封装的是接收的信息,而不是直接原有的信息。用一个集合BK去包含这些属性。然后在外面的时候去调用这个BK函数接着就是servlet的缩写了。首先用一个集合调出之前封装的东西1 调出数据库的方法。Youhua de = new youh

14、ua();2 调出封装数据的方法。shuxing bk = getBook(request);3 方法中多余的删除,在有数据的地方用BK代替,如Int result = doADD(bk)原先里面写的是读出来的数据。现在封装了。所以就用BK代替。值得注意的是在进行单条数据查询用来修改的时候,要从之前的方法中调用方法,需要新建一个集合,然后去调用这个方法youhua yh = new youhua();shuxing a1 = yh.doApp(sql);在后面的删除修改方法的SQL语句中,需要用bk.getBookNo()去寻找用户输入的数据,注意的是上面方面中public int doAdd

15、(shuxing bk)括号内需要写入BK。完整代码和详解Controller包package controller;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.serv

16、let.http.HttpServletResponse;import service.bookService;import dao.DataBaseDao;import model.book;public class bmanager extends HttpServlet public bmanager() super(); public void destroy() super.destroy(); /doPost方法获得请求类型,根据请求类型做出响应并返回到视图层,相当于控制层 public void doPost(HttpServletRequest request, HttpSer

17、vletResponse response)throws ServletException, IOException /封装book,单独写了getBook()方法 book bk = getBook(request); /获取行为参数,如果什么都不传,默认是查询操作 String actionName = request.getParameter(action); actionName = actionName = null?query:actionName.trim(); System.out.println(动作类型action:+actionName); /实例化调用数据库服务的对象相

18、当于服务层 bookService bs = new bookService(); /-查询- if(actionName.equals(query) System.out.println(执行:query.); List booklist = bs.getBookList(bk); request.setAttribute(booklist, booklist); request.getRequestDispatcher(bookList.jsp).forward(request, response); /-增加- else if(actionName.equals(add) System.

19、out.println(执行:add.); int result = bs.doAddBook(bk); if(result=0) /添加失败 request.setAttribute(errorMsg, 图书添加失败!); request.getRequestDispatcher(error.jsp).forward(request, response); else /添加成功 request.getRequestDispatcher(bmanager).forward(request, response); /注意这里之前我们都是要再做一次查询图书列表然后再跳转到图书列表页,考虑到每个方法

20、 /都要在做完自己的功能之后再要做一次查询功能,比较繁琐,可以直接跳转到 /localhost:8080/bookManager/bmanager,不传任何参数,那么当servlet接收到请求 /之后,会被默认作为查询操作,调用查询方法,而查询方法正是返回到图书列表页 /-to修改- else if(actionName.equals(toEditBook) System.out.println(执行:toEditBook.); book newbk = bs.getBookInfo(bk); request.setAttribute(book, newbk); request.getRequ

21、estDispatcher(Editbook.jsp).forward(request, response); /-修改- else if(actionName.equals(edit) System.out.println(执行:edit.); int result = bs.editBook(bk); if(result=0) /修改失败 request.setAttribute(errorMsg, 图书修改失败!); request.getRequestDispatcher(error.jsp).forward(request, response); else /修改成功 request

22、.getRequestDispatcher(bmanager).forward(request, response); /-删除- else if(actionName.equals(delete) System.out.println(执行:delete.); int result = bs.deleteBook(bk); if(result=0) /删除失败 request.setAttribute(errorMsg, 图书删除失败!); request.getRequestDispatcher(error.jsp).forward(request, response); else /删除

23、成功 request.getRequestDispatcher(bmanager).forward(request, response); /考虑到增,删,改,查都是围绕图书这一对象进行,那么可以在进入控制层的时候就封装book的所有属性 public book getBook(HttpServletRequest request) /接收book的所有属性参数,并封装,由于参数都是从request中获取,所以以HttpServletRequest作为参数 book bk = new book(); String bookNo = request.getParameter(bookNo); b

24、ookNo = bookNo=null?:bookNo.trim(); bk.setBookNo(bookNo);/封装图书编号 String bookName = request.getParameter(bookName); bookName = bookName = null?:bookName.trim(); bk.setBookName(bookName);/封装图书名称 String author = request.getParameter(author); author = author = null?:author.trim(); bk.setAuthor(author);/

25、封装作者 String press = request.getParameter(press); press = press = null?:press.trim(); bk.setPress(press);/封装出版社 String isborrow = request.getParameter(isborrow); isborrow = isborrow = null?:isborrow.trim(); bk.setIsborrow(isborrow);/封装是否借出 String borrowDate = request.getParameter(borrowDate); borrowD

26、ate = borrowDate = null?:borrowDate.trim(); bk.setBorrowDate(borrowDate);/封装借出时间 String backDate = request.getParameter(backDate); backDate = backDate = null?:backDate.trim(); bk.setBackDate(backDate);/封装归还时间 System.out.println(-book封装完毕-); return bk; bao包package dao;import java.sql.DriverManager;im

27、port java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import model.book;/这个类相当于最数据库层,一切直接操作数据库的代码全部封装在最底层public class DataBaseDao /公用的部分可以抽出来 private static final String userName=root; private static final String userPasswd=123456; private static final String dbName=xueshenbiao; /这一部分是获取数据库连接statment的代码,因为无论是增,删,改,查操作都要操作数据库,所以获取数据库连接在每个方法里都要重复写,可以单独抽出来 /这就是代码的重复利用 public Stateme

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

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