第7章 JSP中使用数据库分析课件.ppt
《第7章 JSP中使用数据库分析课件.ppt》由会员分享,可在线阅读,更多相关《第7章 JSP中使用数据库分析课件.ppt(109页珍藏版)》请在三一办公上搜索。
1、JSP实用教程(第三版),配合JSP实用教程(第三版)例子源代码一起使用Power Point 制作 张跃平 耿祥义,第7章 JSP中使用数据库,2022/12/20,2,本章主要内容,7.1 MySQL数据库管理系统7.2 JDBC7.3 连接MySQL数据库7.4 查询记录7.5 更新、添加与删除记录7.6 用结果集操作数据库中的表7.7 预处理语句7.8 事务7.9 分页显示记录7.10 常见数据库连接7.11 标准化考试,2022/12/20,3,7.1 MySQL数据库管理系统,MySQL数据库管理系统,简称MySQL,是世界上最流行的开源数据库管理系统,其社区版(MySQL Com
2、munity Edition)是世界上最流行的免费下载的开源数据库管理系统。,目前许多Web开发项目都选用MySQL,其主要原因是MySQL的社区版(MySQL Community Edition)性能卓越,满足许多Web应用已经绰绰有余,而且MySQL的社区版是开源数据库管理系统、可以降低软件的开发和使用成本.,2022/12/20,4,1.下载 登录后选择导航条上的products,在出现的页面的左侧选择“MySQL Community Edition”或在出现的页面的右侧选择“下载MySQL社区版”。如图7.1所示意。,7.1.1 下载、安装与启动MySQL,2. 安装 将下载的mysq
3、l-5.6.16-win32.zip解压缩到本地计算机即可,比如解压缩到D:。形成的安装目录结构如图7.2。,3.启动 打开MS-DOS命令行窗口,进入到bin目录中,执行MySQL安装目录的bin子目录中的mysqld.exe文件: 即在命令行键入: mysqld 或 mysqld -nt启动MySQL数据库服务器。启动成功,MySQL数据库服务器将占用当前MS-DOS窗口,如图7.3所示。,2022/12/20,5,7.1.2 建立数据库,启动MySQL数据库服务器后,就可以建立数据库,并在数据库中创建表。,可以下载图形界面的MySQL管理工具,并使用该工具进行创建数据库、在数据库中创建表
4、等操作,MySQL管理工具有免费的也有需要购买的。 也可以使用MySQL提供的命令行工具进行创建数据库、在数据库中创建表等操作,2022/12/20,1使用MySQL管理工具,可以登录:http:/,(1)建立连接 启动navicat for MySQL 出现如图7.4所示界面 。我们建立的连接名称是gengxiangyi,用户名取root,密码是空,MySQL服务器占用的端口是3306,如图7.5。(2)建立数据库 在新建的连接(gengxiangyi)上单击鼠标右键,然后选择“新建数据库”,在弹出的新建数据库对话框中输入,选择有关信息.如图7.6所示.(3)创建表 在其“表”选择项上单击鼠
5、标右键,选择“新建表”,将出现创建表的对话框。如图7.7所示以及7.8所示。,2022/12/20,7,2使用MySQL监视器,MySQL提供的监视器(MySQL monitor),允许用户使用命令行方式管理数据库。如果读者有比较好的数据库知识,特别是SQL语句的知识,那么使用命令行方式管理MySQL数据库也是很方便的.,需要再打开一个MS-DOS命令行窗口,并使用MS-DOS命令进入到bin目录中,然后使用默认的root用户启动MySQL监视器(在安装MySQL时root用户是默认的一个用户,没有密码)。命令如下: mysql u root,如图7.9所示,2022/12/20,8,(1)
6、创建数据库,启动MySQL监视器后就可以使用SQL语句进行创建数据库、建表等操作。在MS-DOS命令行窗口输入SQL语句需要用“;”号结束,在编辑SQL语句的过程中可以使用c终止当前SQL语句的编辑。需要提醒的是,可以把一个完整的SQL语句命令分成几行来输入,最后用分号作结束标志即可。,使用MySQL监视器创建一个名字为Book的数据库,在当前MySQL监视器占用的命令行窗口输入创建数据库的SQL语句:,create database Book;,(如图7.10所示意),2022/12/20,9,(2) 为数据库建表,首先进入该数据库(即使用数据库): use Book如图7.11所示意。,在
7、数据库Book建立一个名字为bookList表:(如图7.12)CREATE TABLE bookList ( ISBN varchar(100) not null , name varchar(100) CHARACTER SET gb2312, price float , PRIMARY KEY (ISBN);,插入记录的SQL语句:(如图7.13)insert into bookList values(7-302-01465-5,高等数学,28.67);,查询记录的SQL语句(图7.14) select * from bookList;,2022/12/20,10,(3)导入.sql文件
8、中的SQL语句,可以事先将需要的SQL语句保存在一个扩展名是.sql的文本文件中,然后在MySQL监视器占用的命令行窗口使用source命令导入.sql的文本文件中的SQL语句.,drop table carList ;create table carList(number char(60) CHARACTER SET gb2312 not null,name char(50) CHARACTER SET gb2312 ,price float,year date,PRIMARY KEY(number);insert into carList values(加A89CQ8,奔驰,820000,
9、2015-12-26);insert into carList values(洲C12456,宝马,620000,2015-10-10);select * from carList;,然后在当前MySQL监视器占用的命令行窗口键入如下命令:source d:/1000/group.sql导入SQL语句,如图7.15 。,group.sql文本文件的内容如下:,2022/12/20,11,删除数据库的命令:drop database ,例如:删除名为tiger的数据库: drop database tiger;删除表的命令:drop table ,例如,使用book数据库后,执行 drop ta
10、ble booklist;将删除book数据库中的bookList表。,(4)删除数据库或表,2022/12/20,12,7.2 JDBC,JDBC(Java DataBase Connectivity)提供了访问数据库的API,即由一些Java类和接口组成,是Java运行平台的核心类库中的一部分。在JSP中可以使用JDBC实现对数据库中表的记录的查询、修改和删除等操作。如图7.16所示意,我们经常使用JDBC进行如下的操作:与一个数据库建立连接。向已连接的数据库发送SQL语句。处理SQL语句返回的结果。,2022/12/20,13,使用JDBC-数据库驱动程序方式和数据库建立连接需要经过2个
11、步骤:,7.3 连接MySQL数据库,加载JDBC-数据库驱动程序和指定的数据库建立连接,如图7.17所示意,2022/12/20,14,教材下载的是mysql-connector-java-5.1.28.zip,将该zip文件解压至硬盘,在解压后的目录下的mysql-connector-java-5.1.28-bin.jar文件就是连接MySQL数据库的JDBC-数据库驱动程序。将该驱动程序复制到Tomcat服务器所使用的JDK的扩展目录中(即java_home环境变量指定的JDK,见第1章的1.2),比如:D:jdk1.7jrelibext或复制到Tomcat服务器安装目录的commonl
12、ib文件夹中,比如:D:apache-tomcat-8.0.3commonlib,7.3.1加载JDBC-数据库驱动程序,加载MySQL的JDBC-数据库驱动程序代码如下:try Class.forName(com.mysql.jdbc.Driver);catch(Exception e),2022/12/20,15,为了能和MySQL数据库服务器管理的数据库建立连接,必须保证该MySQL数据库服务器已经启动,如果没有更改过MySQL数据库服务器的配置,那么该数据库服务器占用的端口是3306。假设MySQL数据库服务器所驻留的计算机的IP地址是192.168.100.1,7.3.2 建立连接_
13、1,使用 Connection getConnection(String,String,String)方法建立连接的代码如下:,try String uri = jdbc:mysql:/ 192.168.100.1:3306/warehouse; String user =root; String password =99; con = DriverManager.getConnection(uri,user,password); catch(SQLException e) System.out.println(e);,2022/12/20,16,7.3.2建立连接_2,使用Connectio
14、n getConnection(String) 方法建立连接的代码如下:try String uri = jdbc:mysql:/192.168.100.1:3306/warehouse?user=root如果root用户没有设置密码,那么将上述uri中的&password=99更改为:&password=,2022/12/20,17,7.3.2建立连接_3,避免操作数据库出现中文乱码(细节见稍后的7.3.3),那么需要使用 Connection getConnection(String) 方法建立连接,连接代码是(假设用户是root,其密码是99):String uri = jdbc:mys
15、ql:/127.0.0.1/warehouse?+ user=root,用户要和连接MySQL驻留在同一计算机上,使用的IP地址可以是127.0.0.1或localhost。另外,由于3306是MySQL数据库服务器的默认端口号,链接数据库时允许应用程序省略默认的3360端口号.,2022/12/20,18,7.3.3 MySQL乱码解决方案_1,1数据库和表使用支持中文的字符编码 在创建数据库时指定数据库使用的字符编码: create 数据库名 CHARACTER SET字符编码 创建表时,可以指定某个字段使用的字符编码: 字段名 类型 CHARACTER SET字符编码,例如:,creat
16、e people CHARACTER SET gb2312create table myList (id int, name varchar(100) CHARACTER SET gb2312,PRIMARY KEY (id);,2022/12/20,19,7.3.3 MySQL乱码解决方案_2,2连接数据库支持中文编码,JSP中连接MySQL数据库时,需要使用Connection getConnection(java.lang.String) 方法建立连接,而且向该方法参数传递的字符串是:“jdbc:mysql:/地址/数据库?user=用户,2022/12/20,20,例子7_1,例子1是
17、一个简单的JSP页面,该页面中的Java程序片代码负责加载JDBC-驱动程序,并连接到数据库warehouse,查询product表中全部记录(见7.1节曾建立的warehouse数据库),页面运行效果如图7.18。,2022/12/20,21,7.4 查询记录,和数据库建立连接后,就可以使用JDBC提供的API和数据库交互信息。比如查询、修改和更新数据库中的表等。 JDBC和数据库表进行交互的主要方式是使用SQL语句(其它方式见7.8节),JDBC提供的API可以将标准的SQL语句发送给数据库,实现和数据库的交互。,2022/12/20,22,7.4.1 结果集与查询_1,1SQL查询语句与
18、结果集,让连接对象con调用方法createStatement()创建这个SQL语句对象:try Statement sql=con.createStatement(); catch(SQLException e ) System.out.println(e); 对于 ResultSet rs=sql.executeQuery(SELECT * FROM product);内存的结果集对象rs的列数是4列,刚好和product的列数相同.,2022/12/20,23,7.4.1 结果集与查询_2,对于ResultSet rs=sql.executeQuery(SELECT name,price
19、 FROM product);内存的结果集对象rs只有两列,第1列是name列、第2列是price列。 ResultSet结果集一次只能看到一个数据行,使用next()方法走到下一数据行,获得一行数据后,ResultSet结果集可以使用getXxx方法获得字段值(列值),将位置索引(第一列使用1,第二列使用2等等)或列名传递给getXxx方法的参数即可,2022/12/20,24,表7.1 ResultSet类的若干方法,2022/12/20,25,7.4.1 结果集与查询_3,2结果集的列名与列的数目,程序查询的时候。为了代码更加容易维护,希望知道数据库表的字段(列)的名字以及表的字段的个数
20、,那么一个办法是使用返回到程序中的结果集来获取相关的信息。,假如结果集是rs(1) 得到元数据对象metaData ResultSetMetaData metaData = rs.getMetaData();(2)得到结果集的列的个数,即共有几列 int columnCount = metaData.getColumnCount();(3)结果集rs中的第i列的名字: String columnName = metaData.getColumnName(i);,2022/12/20,26,7.4.2 随机查询_1,使用下述方法获得一个Statement对象:Statement stmt=con
21、.createStatement(int type, int concurrency);type取值: ResultSet.TYPE_SCROLL_INSENSITIVE或 ResultSet.TYPE_SCROLL_SENSITIVEConcurrency取值: ResultSet.CONCUR_READ_ONLY或 ResultSet.CONCUR_UPDATABLE,2022/12/20,27,7.4.2 随机查询_2,根据参数的type、concurrency的取值情况,stmt返回相应类型的结果集:ResultSet re=stmt.executeQuery(SQL语句);,滚动查询
22、经常用到ResultSet的下述方法:public void first():将游标移到结果集的第一行。public void last():将游标移到结果集的最后一行。public int getRow():得到当前游标所指行的行号,行号从1开始,如果结果集没有行,返回0public boolean absolute(int row):将游标移到参数row指定的行号。,2022/12/20,7.4.3 条件查询,select from 表 where 字段 满足的条件,例如: select * from product where price 2000 and price5000,selec
23、t * from product where name = java,select * from product where name like %里% ,2022/12/20,29,例子7_2,例子2使用MVC模式(有关知识见第6章)显示warehouse数据库product表中price字段值大于某个值的记录。,2022/12/20,30,例子7_2中的web.xml,根据例子2中使用的servlet的名字及相关类,Web服务目录ch7的WEB-INF下的web.xml文件需包含如下内容(有关web.xml文件的编辑与保存见5.1.2)。, queryByConditionServlet
24、myservlet.control.Example7_2_Servlet queryByConditionServlet /queryByConditionServlet,2022/12/20,31,例子7_2中的模型,模型(Javabean)Javabean模型Example7_2_Bean.java负责存储查询到的记录,在本例子中Example7_2_Bean创建的Javabean模型的id是resultBean,scope取值是request。,2022/12/20,32,例子7_2中的视图(JSP页面),视图(JSP页面) 视图部分由2个JSP页面构成,其中example7_2.jsp
25、页面负责提供输入数据的视图,即用户可以在该页面输入查询的价格条件,然后将数据提交给名字是queryByConditionServlet的servlet。queryByConditionServlet负责查询数据库,并将结果存储到id为resultBean的Javabean数据模型中,然后请求视图中的showRecord.jsp显示数据模型resultBean中的数据。example7_2.jsp和showRecord.jsp的效果如图7.19(a)和图7.19(b)所示,2022/12/20,33,例子7_2中的控制器,控制器(servlet)Example7_2_Sevlet负责创建名字是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 JSP中使用数据库分析课件 JSP 使用 数据库 分析 课件

链接地址:https://www.31ppt.com/p-1822932.html