1、 第第4章章 JDBC数据库访问技术数据库访问技术_第第3次课次课教学内容:教学内容:综合案例开发综合案例开发学生身体体质信息管理系统的开发学生身体体质信息管理系统的开发首先回顾上次课程内容:首先回顾上次课程内容:1、利用、利用Java实现对实现对MySQL数据库访问,需要搭建支持环境。数据库访问,需要搭建支持环境。(安装(安装MySQL数据库、安装可视化操作客户端、下载数据库、安装可视化操作客户端、下载java与与MySQL之间的连接驱动包)之间的连接驱动包)2、使用、使用JDBC访问数据库,其访问流程是:访问数据库,其访问流程是:(1)注册驱动(加载驱动程序):)注册驱动(加载驱动程序):
2、Class.forName(“com.mysql.jdbc.Driver”);(2)建立连接)建立连接(Connection):Connection conn=DriverManager.getConnection(url);/创建连接对象创建连接对象 注意:注意:url如何形成?如何形成?URL连接字格式一定要正确,否则会出现连接数据库错误!连接字格式一定要正确,否则会出现连接数据库错误!(3)创建数据库操作对象用于执行)创建数据库操作对象用于执行SQL的语句:的语句:PreparedStatement pstmt=conn.prepareStatement(sql);(4)执行语句(分两种
3、类型:查询和更新操作)。)执行语句(分两种类型:查询和更新操作)。ResultSet rs=pstmt.executeQuery();/执行,得到查询结果集合执行,得到查询结果集合,注意,这里是空参数注意,这里是空参数 或或 int n=pstmt.executeUpdate();/执行,返回实际删除记录的条数,执行,返回实际删除记录的条数,(5)对于查询要处理执行结果)对于查询要处理执行结果(ResultSet)。(6)释放资源。)释放资源。类或接口类或接口作用作用java.sql.DriverManager该类该类处理驱动程序的加载处理驱动程序的加载和和建立新数据库连接建立新数据库连接ja
4、va.sql.Connection该接口该接口实现对特定数据库的连接实现对特定数据库的连接java.sql.Satement该接口表示该接口表示用于执行静态用于执行静态SQL语句语句并返回它所生成结果的对象并返回它所生成结果的对象java.sql.PreparedStatement该接口表示该接口表示预编译的预编译的SQL语句的对象语句的对象,派生自,派生自Satement,预编译预编译SQL效率高且支持参数查询效率高且支持参数查询java.sql.CallableStatement该接口表示用于该接口表示用于执行执行SQL语句存储过程的对象语句存储过程的对象。派生自派生自PreparedSt
5、atement,用于调用数据库中的存储过程用于调用数据库中的存储过程java.sql.ResultSet该接口表示该接口表示数据库结果集的数据表数据库结果集的数据表,该数据表该数据表通过执行查询数据库的语句生成通过执行查询数据库的语句生成3、JDBC数据库访问所涉及到的类:数据库访问所涉及到的类:必须掌握每个类的常用方法与使用必须掌握每个类的常用方法与使用4、实现数据库访问最常见的两个错误、实现数据库访问最常见的两个错误必须认真检查这两处的格式必须认真检查这两处的格式:(1)创建连接对象的)创建连接对象的“连接字连接字字符串字符串”String userName=root;/数据库用户名数据库
6、用户名 String userPwd=123456;/密码密码 String dbName=students;/数据库名数据库名 String url1=jdbc:mysql:/localhost:3306/+dbName;String url2=?user=+userName+&password=+userPwd;String url3=&useUnicode=true&characterEncoding=UTF-8 /设置汉字编码格式设置汉字编码格式 String url=url1+url2+url3;/形成带数据库读写编码的数据库连接字形成带数据库读写编码的数据库连接字 Connecti
7、on conn=DriverManager.getConnection(url);url字符串格式错误,在执行字符串格式错误,在执行Connection conn=DriverManager.getConnection(url),就会,就会出现错误,请认真检查该字符串是否正确!出现错误,请认真检查该字符串是否正确!(2)SQL语句语句字符串,语句格式不正确字符串,语句格式不正确 对于对于SQL语句格式不正确,在执行语句格式不正确,在执行查询、查询、或者或者更新更新语句时语句时,会发生错误。,会发生错误。ResultSet rs=pstmt.executeQuery();/执行,得到查询结果集合
8、执行,得到查询结果集合 或或 int n=pstmt.executeUpdate();/执行,返回实际删除记录的条数执行,返回实际删除记录的条数,应用设计示例应用设计示例综合案例综合案例 学生身体体质信息管理系统的开发学生身体体质信息管理系统的开发【案例说明案例说明】描述一个学生身体体质的信息有:有描述一个学生身体体质的信息有:有id(序号,整型),(序号,整型),name(姓名,(姓名,字符串),字符串),sex(性别,字符串),(性别,字符串),age(年龄,整型),(年龄,整型),weight(体重,实型),(体重,实型),hight(身高,实型身高,实型)。存放学生体质信息的数据库为。
9、存放学生体质信息的数据库为students,数据表为,数据表为stu_info。要求,利用要求,利用JDBC技术实现对学生身体体质信息的管理。技术实现对学生身体体质信息的管理。该问题是一个简单的数据库信息管理系统,基本操作主要有:该问题是一个简单的数据库信息管理系统,基本操作主要有:n 数据库和数据表的建立;数据库和数据表的建立;n 数据库记录信息的添加(插入);数据库记录信息的添加(插入);n 数据库记录信息的查询;数据库记录信息的查询;n 数据库记录信息的删除;数据库记录信息的删除;n 数据库记录信息的修改。数据库记录信息的修改。n 整合各设计模块形成完整的应用系统整合各设计模块形成完整的
10、应用系统n 问题与思考以及系统的改进问题与思考以及系统的改进提示:注意我给出的设计方案,以及提示:注意我给出的设计方案,以及逐步修改完善程序的思想。逐步修改完善程序的思想。对于该案例,采用有底向上的设计方式,逐对于该案例,采用有底向上的设计方式,逐步构造系统,并且在构造系统的每步中,对出步构造系统,并且在构造系统的每步中,对出现的各种问题进行分析并给出不同的解决方案现的各种问题进行分析并给出不同的解决方案,目的是逐步理解和掌握设计思想和设计过程,目的是逐步理解和掌握设计思想和设计过程。1、数据库和数据表的建立、数据库和数据表的建立 该系统需要创建一个数据库以及该库中的一个数据表在该系统需要创建
11、一个数据库以及该库中的一个数据表在MySQL中创建一个数据库:中创建一个数据库:students,并在数据库,并在数据库students中创建表中创建表students_info。字段中文描述数据类型是否为空id学生学号int否name学生名字Varchar(20)是sex性别Varchar(4)是age年龄int是weight体重float是hight身高float是数据库和数据表的建立代码(可以利用(可以利用MySQL的可视化图形客户端实现)的可视化图形客户端实现)2、添加记录模块的设计与实现、添加记录模块的设计与实现【例例4-1】利用利用PreparedStatement实现数据库中插入
12、一条记录。实现数据库中插入一条记录。【分析分析】其处理步骤:其处理步骤:(1)建立数据库的连接。)建立数据库的连接。(2)形成)形成SQL语句(可以带参数,也可以不带参数)。语句(可以带参数,也可以不带参数)。(3)利用连接对象建立)利用连接对象建立PreparedStatement对象。对象。(4)若是带参数的)若是带参数的SQL执行语句,则需要对各参数设置相应的参数值。执行语句,则需要对各参数设置相应的参数值。(5)调用)调用PreparedStatement对象,执行对象,执行executeUpdate()方法。方法。(6)根据)根据executeUpdate()方法返回的整数,判定是否
13、执行成功,如果大于方法返回的整数,判定是否执行成功,如果大于0表示成功,否则表示成功,否则执行失败。执行失败。(7)关闭所有资源。)关闭所有资源。注意:注意:采用采用PreparedStatement类实现,可以避免一些数据类型的错误,并可以提高处理效率类实现,可以避免一些数据类型的错误,并可以提高处理效率,在我们以后的程序设计中,一般都使用这种方式。,在我们以后的程序设计中,一般都使用这种方式。问题:若插入任意信息的记录如何实现呢?问题:若插入任意信息的记录如何实现呢?解决方案解决方案添加提交数据页面添加提交数据页面【设计与实现设计与实现】源代码源代码 【运行运行】程序运行程序运行【例例4-
14、2】利用提交页面提交要添加的学生信息。然后进入添加处理程序实现将信息添加到数利用提交页面提交要添加的学生信息。然后进入添加处理程序实现将信息添加到数据库。据库。【分析分析】需要两个需要两个JSP程序:程序:insert_stu_2_tijiao.jsp将提交信息存放到将提交信息存放到request对象中,而程序对象中,而程序insert_stu_2.jsp从从request对象中获取数据,形成插入记录的对象中获取数据,形成插入记录的SQL语句,并实现插入。语句,并实现插入。request对象insert_stu_2.jspinsert_stu_2_tijiao.jsp【设计关键】【设计关键】(
15、1)其关键是实现这两个组件之间的数据共享,即,使用)其关键是实现这两个组件之间的数据共享,即,使用request对象对象存储存储id,name,sex,age,weight,hight等变量。等变量。(2)在添加处理页面,设置参数值时,必须注意各字段的数据类型,不同的类型采用不同的设)在添加处理页面,设置参数值时,必须注意各字段的数据类型,不同的类型采用不同的设置方法。置方法。【实现】(1)提交页面程序insert_stu_2_tijiao.jsp (2)插入记录程序insert_stu_2.jsp【运行】程序运行 进一步再改进进一步再改进添加记录模块的设计与实现添加记录模块的设计与实现思考:
16、思考:如何实现连续插入操作?如何实现连续插入操作?是否可是实现批量导入?如何实现是否可是实现批量导入?如何实现3、查询记录模块的设计与实现、查询记录模块的设计与实现【例例4-3】采用采用PreparedStatement的对象实现记录的查询操作,要求查询表的对象实现记录的查询操作,要求查询表stu_info中的中的所有学生信息并显示在网页上。所有学生信息并显示在网页上。【分析分析】其处理步骤:其处理步骤:(1)建立数据库的连接。)建立数据库的连接。(2)形成查询)形成查询SQL语句(可以带参数,也可以不带参数。)语句(可以带参数,也可以不带参数。)(3)利用连接对象建立)利用连接对象建立Pre
17、paredStatement对象。对象。(4)若是带参数的)若是带参数的SQL执行语句,则需要对各参数设置相应的参数值(若执行语句,则需要对各参数设置相应的参数值(若SQL语句不带语句不带参数,该步可以省)。参数,该步可以省)。(5)再调用)再调用PreparedStatement对象的对象的executeQuery()方法,并方法,并返回返回ResultSet对象对象。(6)对所得到的对所得到的ResultSet对象中的各记录依次进行处理。对象中的各记录依次进行处理。(7)关闭所有资源。)关闭所有资源。【设计关键设计关键】该题目要求是显示出所有的记录,对于查询该题目要求是显示出所有的记录,对
18、于查询SQL语句不需要参数,其查询语句为:语句不需要参数,其查询语句为:String sql=select*from stu_info“注意:注意:在我们的设计中,不要使用在我们的设计中,不要使用*,最好,最好,列出所需要的字段名称列出所需要的字段名称,增加程序的可,增加程序的可读性以及易于设计读性以及易于设计。另外,对于获得的查询结果集另外,对于获得的查询结果集ResultSet中每条记录的处理方式,中每条记录的处理方式,在本例中采用在本例中采用HTML的表格标签实现数据的显示的表格标签实现数据的显示。【实现实现】源代码源代码【运行运行】程序运行程序运行【例例4-4】要求在表要求在表stu_
19、info中,查询体重介于中,查询体重介于60至至80之间所有同学并在网页上显示。之间所有同学并在网页上显示。【分析分析】采用带参数的查询采用带参数的查询SQL语句。语句。【设计关键设计关键】该例题的设计关键是查询该例题的设计关键是查询SQL语句的形成,即:语句的形成,即:String sql=select*from stu_info where weight=?and weight=60 and weight=?;另外,对于该题目,其条件是固定的,其参数值的设置是:另外,对于该题目,其条件是固定的,其参数值的设置是:pstmt.setFloat(1,80);【实现实现】源代码【运行】程序运行
20、【例例4-9】对数据库对数据库students中的数据表中的数据表stu_info,删除满足条件(由提交页面提供)的,删除满足条件(由提交页面提供)的所有记录。所有记录。【分析分析】需需要要2个组件,一个是个组件,一个是delete_stu_2_tijiao.jsp,实现条件的提交;第二个是,实现条件的提交;第二个是delete_stu_2.jsp,删除满足条件的所有记录。,删除满足条件的所有记录。request对象delete_stu_2.jspdelete_stu_2_tijiao.jsp【设计关键】【设计关键】(1)需要在)需要在2个页面之间共享信息,需要使用个页面之间共享信息,需要使用
21、JSP内置对象内置对象request实现共享。为了简化实现共享。为了简化设计,设计,按按“姓名姓名”、“性别性别”、“体重范围段体重范围段”设置查询条件。设置查询条件。(2)在提交页面,提交信息可以是)在提交页面,提交信息可以是“空值空值”,表示该字段不受限制。,表示该字段不受限制。(3)在查询处理页面,设置查询参数值时,必须注意各字段的数据类型。)在查询处理页面,设置查询参数值时,必须注意各字段的数据类型。改进改进具有可变条件值的删除设计与实现具有可变条件值的删除设计与实现【实现】(1)delete_stu_2_tijiao.jsp,实现条件的提交;(2)delete_stu_2.jsp,删
22、除满足条件的所有记录【运行】程序运行6、整合各设计模块形成完整的应用系统 系统的应用界面如图所示。页面的左部分是操作功能菜单选项,当单击某选项时,会相应的执行该选项的功能,图所示是选择“按条件修改学生”后所显示的网页界面。功能模块划分:功能模块划分:1.列出全部学生模块:该功能模块在列出全部学生模块:该功能模块在【例例4-3】中已实现,其程序为中已实现,其程序为find_stu_1.jsp。2.按条件查询学生模块:该功能模块在按条件查询学生模块:该功能模块在【例例4-5】中已实现,其程序为中已实现,其程序为find_stu_3_tijiao.jsp和和find_stu_3.jsp。3新添加学生
23、模块:该功能模块在新添加学生模块:该功能模块在【例例4-2】中已实现,其程序为中已实现,其程序为insert_stu_2_tijiao.jsp和和insert_stu_2.jsp。4按条件删除学生模块:该功能模块在按条件删除学生模块:该功能模块在【例例4-9】中已实现,其程序为中已实现,其程序为delete_stu_2_tijiao.jsp和和delete_stu_2.jsp。5按条件修改学生模块:该功能模块在按条件修改学生模块:该功能模块在【例例4-7】中已实现,其程序为中已实现,其程序为update_stu_2_tijiao.jsp、update_stu_2_edit.jsp、update
24、_stu_2.jsp。6主页面框架的设计主页面框架的设计 该应用系统的主页面框架如图该应用系统的主页面框架如图4-10所示,由所示,由3部分组成:部分组成:最上方的显示标题部分(最上方的显示标题部分(index_title.jap),),左边的显示操作菜单的显示左边的显示操作菜单的显示(index_stu_left.jsp),右边显示运行界面部分(右边显示运行界面部分(index_stu_right.jsp),),另外,由这另外,由这3部分组合形成主页面的程序(部分组合形成主页面的程序(index_stu.jsp)。)。设计过程与源代码设计过程与源代码运行程序运行程序7、问题与思考、问题与思考
25、(1)通过前面的设计,我们应该发现,)通过前面的设计,我们应该发现,程序的结构相似,都有公共的一些代码程序的结构相似,都有公共的一些代码,我们是否可以将其抽象,我们是否可以将其抽象出来,形成类?出来,形成类?(2)这些公共的代码主要有两部分:)这些公共的代码主要有两部分:创建连接对象的那段代码:创建连接对象的那段代码:String driverName=com.mysql.jdbc.Driver;/MySQL数据库驱动程序名数据库驱动程序名String userName=root;/数据库用户名数据库用户名String userPwd=123456;/密码密码String dbName=stu
26、dents;/数据库名数据库名String url1=jdbc:mysql:/localhost:3306/+dbName;String url2=?user=+userName+&password=+userPwd;String url3=&useUnicode=true&characterEncoding=UTF-8;String url=url1+url2+url3;/形成带数据库读写编码的数据库连接字形成带数据库读写编码的数据库连接字Class.forName(driverName);/加载并注册驱动程序加载并注册驱动程序Connection conn=DriverManager.ge
27、tConnection(url);/创建连接对创建连接对关闭对象,释放资源那段代码:关闭对象,释放资源那段代码:if(rs!=null)rs.close();if(pstmt!=null)pstmt.close();if(conn!=null)conn.close();为此,将这两部分整合,形成一个类,该类的属性就是连接数据库所需要的为此,将这两部分整合,形成一个类,该类的属性就是连接数据库所需要的4个数据,其方法对应于公个数据,其方法对应于公共代码,分别设计方法,完成所需要的功能。(共代码,分别设计方法,完成所需要的功能。(每个方法其参数是什么?返回值是什么?每个方法其参数是什么?返回值是什
28、么?)给出类的设计实现给出类的设计实现源代码源代码(3)对于数据库访问操作,只有两个操作:)对于数据库访问操作,只有两个操作:查询操作查询操作和和更新操作更新操作 对于对于更新操作更新操作,只有只有SQL语句不同语句不同(添加、删除、修改),操作结果(添加、删除、修改),操作结果返回一个整数返回一个整数。对于对于查询操作查询操作,对于,对于给定的查询给定的查询SQL语句语句,操作结果,操作结果返回一个结果集合对象返回一个结果集合对象(ResultSet)。)。也可以对这两个操作设计方法(每个方法其参数是什么?返回值是什么?)也可以对这两个操作设计方法(每个方法其参数是什么?返回值是什么?)为此
29、,将这两部分整合,形成一个类,该类不需要属性,设计两个方法(更新、查询)完成所需要为此,将这两部分整合,形成一个类,该类不需要属性,设计两个方法(更新、查询)完成所需要的功能。(的功能。(每个方法其参数是什么?返回值是什么?每个方法其参数是什么?返回值是什么?)给出类的设计实现给出类的设计实现源代码源代码(4)基于这两个类,重新修改程序基于这两个类,重新修改程序计算机上有个术语,称为计算机上有个术语,称为程序的重构程序的重构。这样设计的程序更简单,更易于修改完善。这样设计的程序更简单,更易于修改完善。给出新的设计实现演示给出新的设计实现演示(5)思考:若学生采用班级(有多个班级构成我们的数据)
30、,只有自己班级的学生可以思考:若学生采用班级(有多个班级构成我们的数据),只有自己班级的学生可以进入自己所在的班级对信息进行操作,如何实现呢?(其他班级的学生信息不能看,进入自己所在的班级对信息进行操作,如何实现呢?(其他班级的学生信息不能看,也不能修改)也不能修改)本章小结 本章首先介绍了JDBC技术中常用的接口,然后介绍了MySQL数据库的连接方法及其访问数据库的方法,接着介绍了数据库的查询、添加、修改、删除等操作方法和处理步骤。通过较多的实例演示了设计思想和设计方法。作业与实验要求:(1)首先完成教材4.3节的系统。按教材中给出的设计思想和设计步骤,一步一步的完成系统,体验大程序的设计思
31、想和设计方法。(2)在完成(1)基础上,完成后面的设计题目。(3)这两个题目作为我们本学期课程设计的一部内容,占60%的成绩。(4)在11周星期六上交所设计的系统。否则,不给成绩。1设计一个简单的网上名片管理系统,实现名片的增、删、改、查等操作。该名片管理系统包括如下功能:(1)用户登录与注册用户登录:在登录时,如果用户名和密码正确,进入系统页面。用户注册:新用户应该先注册,然后再登录该系统。(2)名片管理增加名片:以仿真形式(按常用的名片格式)增加名片信息。修改名片:以仿真形式(按常用的名片格式)修改名片信息。查询名片:以模糊查询方式查询名片。删除名片:名片的删除由2种方式,即把名片移到回收站,把名片彻底删除。(3)回收站管理还原:把回收站中的名片还原回收。彻底删除:把名片彻底从回收站删除。浏览/查询:可以模糊查询、浏览回收站中的名片。选作练习2建立数据库lianxi,在该数据库下建立一个图书表book,图书包含信息:图书号、图书名、作者、价格、备注字段。设计一应用程序,完成图书信息的管理。主要完成图书信息的添加、查询、删除、修改等操作。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。