JSPWeb数据库应用开发.ppt

上传人:牧羊曲112 文档编号:6510399 上传时间:2023-11-07 格式:PPT 页数:74 大小:1.99MB
返回 下载 相关 举报
JSPWeb数据库应用开发.ppt_第1页
第1页 / 共74页
JSPWeb数据库应用开发.ppt_第2页
第2页 / 共74页
JSPWeb数据库应用开发.ppt_第3页
第3页 / 共74页
JSPWeb数据库应用开发.ppt_第4页
第4页 / 共74页
JSPWeb数据库应用开发.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《JSPWeb数据库应用开发.ppt》由会员分享,可在线阅读,更多相关《JSPWeb数据库应用开发.ppt(74页珍藏版)》请在三一办公上搜索。

1、1,第 九 章 基于JSP的Web数据库应用开发,第三篇 JSP Web数据库应用开发,2,JSP,9.1 Web数据库应用基础9.1.1 数据库基本概念1.基本术语(1)数据库系统 数据库系统是一个存储数据的计算机系统。(2)数据库 数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库概念包含两层意思:数据库保管数据的“仓库”。“数据”和“库”两个概念结合成为“数据库”。数据库是数据管理的方法和技术,它能够合理地组织数据、方便地维护数据、严密地控制数据和有效地利用数据。数据库是一个合理组织了的数据仓库。,3,JSP,(3)数据库管理系统(DBMS)数据库管理系统是管理数据库的软件系

2、统,它提供了一组建立数据库和管理数据库的工具。用户可以使用这些工具进行各种数据库操作,如数据库生成、数据表格生成、数据的输入和修改、数据的检索和使用、数据安全、数据相关关系的设定和数据访问权限的设定等。目前市场上比较著名的数据库管理系统有Oracle、Sybase、Informix、SQL Server等。2.数据库设计与管理信息系统 管理信息系统简称为MIS(Management Information System),管理信息系统帮助人们完成需要手工处理的信息处理工作,不仅能够提高工作效率,降低劳动强度,而且能够提升管理信息的质量和水平。管理信息系统的数据存放在数据库中。,4,数据库,用

3、户,息,信,管,理,系,统,功,能,模,块,数,据,库,管,理,系,统,用 户,用 户,管理信息系统、数据库管理系统和数据库的关系,5,3.数据库、表、记录和字段 数据库:数据库中的数据表示为多个表的集合,通过建立表与表之间的关系来定义数据库的结构。表:按某一公共结构存储的一组相似数据,它是数据库的基础构件。记录:表中数据以行、列方式将相关信息排列成逻辑组,表中每一行称为一个记录 字段:表中每一列称为字段 例如,网上书店数据库名为bookshop,库中有7个表:book、userinfo、orderform、orderdetail、notes、employee和publisher。,6,JSP

4、,9.1.2创建数据库和表1.创建数据库(1)启动SQL Server服务管理器(2)创建数据库2.创建新表:booktable,7,JSP,9.1.3 SQL语句1.选择语句(Select Statement)从现有的数据库中检索数据,将满足一定约束条件的一个或多个表中的字段从数据库中挑选出来,并按一定的分组和排序方法显示。简单的选择语句只有FROM子句,用来指定数据的来源,也就是记录来自那些表。WHERE子句指定选择记录时要满足的条件,如果没有WHERE子句,则返回表中的所有记录。SELECT 字段1,字段2,FROM 表名WHERE 条件表达式(1)在booktable表中检索所有书名

5、SELECT bookname FROM booktable 功能:从booktable表的bookname字段检索数据。SELECT:关键字,说明要做查询操作;bookname:字段名,数据从该字段中检索;FROM:关键字,指明信息来源,后面列出表的名称。booktable:表的名称,数据从该表中检索。结果集是booktable表中的全部书名。,8,JSP,(2)在booktable表中查询书号等于ISBN 7-04-012301-0的书名,SELECT bookname FROM booktable WHERE bookid=ISBN ISBN 7-04-012301-0结果集是:C+程序

6、设计。(3)范围查询,在booktable表中查询2002年上半年出版的书名,SELECT bookname FROM booktable WHERE pubdate Between2002-1-1and 2002-6-30(4)ORDER BY子句,使结果集按序排列。图书按出版日期排序:SELECT*FROM booktable ORDER BY bookid缺省值是升序,按降序排列,加关键字DESC:SELECT*FROM booktable ORDER BY bookid DESC(5)模糊查询,在WHERE子句中应用LIKE运算符,可以只选择与用户规定格式相同的记录。用通配符“%”可以

7、代替任何字符串。例如,在userinfo表中查询所有姓王的读者,可用以下语句:SELECT*FROM userinfo WHERE username LIKE 王%,9,JSP,2.插入语句(Insert Statement)一个或多个记录添加到指定表中。INSERT INTO 表名(字段1,字段2,n)VALUES(值1,值2,n)例如,在booktable表中插入新书记录(书号:ISBN 7-04-012301-0,书名:C+程序设计,作者:吴乃陵,出版社编号:3,出版日期:2003-8-1,定价:29.5):INSERT INTO booktable(bookid,bookname,au

8、thor,publisher,pubdate,price,type,quantity)VALUES(ISBN 7-04-012301-0,C+程序设计,吴乃陵,高等教育出版社,2003-8-1,29.5,计算机,100),10,JSP,3.更新语句(Update Statements)更新表中的字段。UPDATE 表名 SET 列名=表达式,列名=表达式,WHERE条件表达式 例如,在booktable表中把所有图书的在库册数减2,语句如下:UPDATE booktable SET quantity=quantity-2,11,JSP,4.删除语句(Delete Statement)删除由FR

9、OM子句列出的、满足WHERE子句条件的一个或多个表中的记录。DELETE FROM 表名 WHERE条件表达式例如,在booktable表中删除刚才插入的书号为ISBN 7-04-012301-0的记录,语句如下:DELETE FROM booktable WHERE bookid=ISBN 7-04-012301-0又如:下条SQL语句的功能将删除表中所有的记录,使用时要特别当心:DELETE FROM booktable,12,JSP,9.2 JDBC接口技术9.2.1 JDBC 概述1.什么是JDBC JDBC(Java Database Connectivity)接口技术实际上是一种

10、通过Java语言访问任何结构化数据库的应用程序接口(API)。许多数据库系统带有JDBC驱动程序,Java程序通过JDBC驱动程序与数据库连接,执行查询、插入、更改和删除等操作。为能够访问带有ODBC驱动程序的数据库,Sun公司开发了JDBC ODBC Bridge,应用这项技术,Java程序就能够访问带有ODBC驱动程序的数据库。由于大多数数据库系统都带有ODBC驱动程序,所以使用JDBC ODBC Bridge技术Java程序可以访问大多数数据库,如:MS SQL Server、Oracle、Sybase、Informix和MS Access等数据库。,2.JDBC 的功能(1)与一个数据

11、库建立连接(connection);(2)向数据库发送SQL语句(statement);(3)处理数据库返回的结果(resultset)。,13,JSP,3.JDBC访问数据库的四种方式(1)JDBC-ODBC Bridge驱动程序JDBC-ODBC桥利用ODBC驱动程序提供JDBC访问。利用微软 ODBC的开放性,只要本地机装有ODBC驱动,采用JDBC-ODBC桥驱动几乎可以访问所有的数据库。(2)本地API驱动 本地API驱动直接把JDBC调用转变成数据库标准调用,然后再去访问数据库。这种方法也需要本地数据库驱动程序。(3)网络协议驱动使用一段纯Java代码,把JDBC调用转换成目标数据

12、库网络协议调用。(4)本地协议驱动使用一段纯Java代码,把JDBC调用转换成数据库本地协议调用。,14,JSP,9.2.2 JDBC-ODBC桥 先建立数据源,数据源对应一个数据库。为了连接到数据库,需要建立一个JDBC-ODBC桥接器,也就是加载JDBC-ODBC桥驱动程序。以网上书店的bookshop数据库为例。建立数据源(DSN:Data Source Name)一个数据源就是对数据库的一个命名连接。数据源有三种:用户数据源、系统数据源和文件数据源。用户数据源只有用户可以看见,只能用于当前机器中。系统数据源允许所有用户登录特定服务器去访问数据库,任何具有权限的用户都可以访问系统数据源。

13、文件数据源把信息存储在后缀为.dsn的文本文件中,如果把该文件放在网络共享目录中,则可被网络中任何一台工作站访问到。Web应用程序访问数据库时,通常是建立系统数据源。,15,JSP,9.2.3 JDBC建立数据库连接示例 用JDBC-ODBC Bridge驱动程序建立与数据库的连接。例9.1(P232):使用JSP技术查询booktable表中书号是ISBN 7-04-012301-0的图书。本例使用前面生成的bookshoplk数据源,通过JDBC-ODBC桥访问数据库。,JDBC-ODBC Bridge,16,/所有与数据库有关的对象和方法都 在java.sql包中JDBC建立数据库连接

14、数 据 查 询/加载驱动程序,17,bookidbooknameauthorpublisherpubdatepricetypequantity/将名称为bookid的列的内容作为字符型返回/只返回年月日,18,JSP,19,JSP,9.2.4 JDBC建立数据库连接方法详解1.JDBC建立数据库连接步骤(1)加入命令行:(2)加载驱动程序:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);(3)建立连接:Connection conn=DriverManager.getConnection(jdbc:odbc:bookshoplk,sa,);(4)发送SQ

15、L语句:Statement stmt=conn.createStatement();(5)建立ResultSet(结果集)对象:ResultSet rs;(6)执行SQL语句:rs=stmt.executeQuery(SELECT*FROM booktable where bookid=ISBN 7-04-012301-0);/executeQuery:用于产生单个结果集的语句(7)关闭对象:rs.close();/关闭ResultSet对象 stmt.close();/关闭Statement对象 conn.close();/关闭Connection对象,20,JSP,2.JDBC数据库连接步

16、骤详解(1)加入命令行(P234)所有与数据库有关的对象和方法都在java.sql包中,所以在使用JDBC的程序中必须加入命令行:(2)加载驱动程序(P234)应用JDBC-ODBC Bridge方式连接数据库,必须先加载JDBC-ODBC Bridge驱动程序,语句如下:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Class是包java.lang中的一个类,该类通过调用静态方法forName建立JDBC-ODBC桥接器,即加载驱动程序。由于加载驱动程序时可能产生异常,所以需要异常处理程序段。try catch(Exception e),21,JSP

17、,(3)建立连接(P235)要连接一个数据库,必须创建Connection类的一个实例:Connection conn=DriverManager.getConnection(jdbc:odbc:数据源名,Loginname,Password);调用DriverManager.getConnection方法建立与数据库的连接,该方法指定了数据库的位置、用户名和用户口令。DriverManager类位于JDBC的管理层,作用在用户和驱动程序之间。数据源名是在“控制面板管理工具数据源(ODBC)”中设置的数据源名。Loginname是用户名,Password是用户口令。如果没有为数据源设置用户名和

18、用户口令,连接形式如下:Connection conn=DriverManager.getConnection(jdbc:odbc:数据源名,);一旦DriverManager.getConnection方法找到了建立连接的驱动程序和数据源,则通过用户名和口令开始与DBMS建立连接,如果连接通过,连接建立完成。,22,JSP,(4)发送SQL语句(P235)Statement类的对象由Connection 的createStatement方法创建,用于发送不带参数的简单SQL语句,对数据库进行具体操作,如查询、修改等。在执行一个SOL查询语句前,必须用createStatement方法建立一个

19、Statement类的对象。例如:Connection conn=DriverManager.getConnection(jdbc:odbc:bookshoplk,sa,);Statement stmt=conn.createStatement();,23,JSP,(5)创建结果集对象(P236)一旦连接到数据库,就可以查询数据表名、列名和有关的信息,并且可以运行SQL语句对数据库的数据进行查询、添加、更新和删除等操作。JDBC提供了ResultSet、DatabaseMetaData和ResultSetMetaData类获取数据库中的信息。ResultSet类存放查询结果,并通过一套方法提供

20、对数据的访问。它是JDBC中很重要的对象。ResultSet包含任意数量的命名列,可以按名字访问这些列;它也包含一或多个行,可以按顺序自上而下地逐一访问。例如:Statement stmt=con.createStatement();ResultSet rs;rs=stmt.executeQuery(SELECT*FROM booktable where bookid=ISBN 7-04-012301-0);,24,JSP,当建立一个ResultSet类对象时,它指向第一行之前的位置。ResultSet 对象常用方法如下:getInt(int):将序号为int的列的内容作为整数返回;getIn

21、t(String):将名称为String的列的内容作为整数返回;getFloat(int):将序号为int的列的内容作为一个float型数返回;getFloat(String):将名称为String的列的内容作为float型数返回;getData(int):将序号为int的列的内容作为日期返回;getData(String):将名称为String的列的内容作为日期返回;next():把行指针移到下一行,如果没有剩余行,则返回false;close():关闭结果集;getMetaData():返回ResultSetMetaData对象。,25,JSP,ResultSetMetaData类实例提供

22、ResultSet中列的名称、数目和类型信息。例如:ResultSetMetaData rsmd;rsmd=Results.getMetaData();NumCols=rsmd.getColumnCount();ResultSetMetaData对象常用方法如下:getColumnCount():返回ResultSet中的列数;getColumnName(int):返回序号为int的列名;getColumnLabel(int):返回序号为int列暗含的标签;isCurrency(int):如果此列包含有货币单位的一个数字,则返回true;isReadOnly(int):如果此列是只读,则返回t

23、rue;isAutoIncrement(int):如果此列自动递增,则返回true。,26,例9.2(P237):输出booktable 表中各列的名称。代码创建了ResultSetMetaData对象rsmd,并使用getColumnCount()和getColumnName()方法取得booktable表中的列数和列名。,输出 booktable 表各列的名称 输出 booktable 表各列的名称,输出booktable 表列名,27,JSP,记录集中共有 列,各列的名称是:/getColumnCount():返回ResultSet中的列数,28,(6)执行SQL语句Statement对

24、象提供了3种执行SQL语句的方法:executeQuery:用于产生单个结果集的语句,例如select语句。rs=stmt.executeQuery(SELECT*FROM booktable);executeUpdate:用来执行insert、delete以及sqlddl(数据定义语句)。Execute:用来返回多个结果集、多个更新计数或两者组合的语句。,29,JSP,9.3 查询记录11.3.1 顺序查询应用结果集Result的next()方法顺序输出一个表里的包含全部字段的所有记录。例9.3(P238):顺序输出数据表“booktable”中的所有记录和所有字段。分析:使用代码“Sele

25、ct*From booktable”从booktable数据表选择所有的记录,放置在rs结果集中,然后使用rs.next()方法将结果集中的数据顺序显示出来。,顺序查询,30,顺序查询顺序输出数据表“booktable”中包含所有字段的所有记录 bookidbooknameauthorpublisher pubdatepricetypequantity,31,32,JSP,9.3.2 参数查询数据筛选是指按条件从数据库中选出符合条件的所有记录,由Where子句指定选择记录时要满足的条件。例 9.4(P240):用户在界面输入查询条件,如出版社的名称,输入的名称提交给ex9-04.jsp处理,输

26、出数据表“booktable”中需要查询的出版社出版的图书。其关键查询语句为:Select*From booktable where publisher=+publishername+,参数查询,33,JSP,ex9-04.html代码清单如下:参数查询应用案例 图 书 查 询 请输入出版社名称:,34,ex9-04.jsp代码清单如下:选择查询输出数据表booktable中的记录,35,bookidbooknameauthorpublisher pubdateprice typequantity,36,37,38,JSP,9.3.3 模糊查询在模糊查询中可以用通配符“%”代表任意多个

27、字符,“_”代表任意一个字符。例9.5(P242):用户在界面(ex9-05.html)中输入书名中的部分词汇,输入的部分词汇提交给ex9-05.jsp处理,输出数据表“booktable”中所有包含该词汇图书的书名。其关键查询语句为:Select*From booktable where bookname like%+b_name+%,模糊查询,39,JSP,代码ex9-05.html清单如下:模糊查询应用案例 模 糊 查 询 书名:注:可以输入部分词汇,40,JSP,代码ex9-05.jsp清单如下:模糊查询输出与有关的图书,41,JSP,42,bookidbooknameauthorpu

28、blisher pubdateprice typequantity,43,44,JSP,9.3.4 范围查询例9.6(P244):输出数据表booktable中某段时间内出版的图书。用户在界面(ex9-06.html)中输入查询的开始日期和截至日期,提交给ex9-06.jsp处理,输出数据表booktable中该时间段出版的图书。分析:其关键查询语句为Select*From booktable where pubdate between+s_pubdate+and+e_pubdate+,范围查询,45,JSP,代码ex9-06.html清单如下:范围查询应用案例 根据出版日期查询图书

29、查询在 和之间出版的图书,46,JSP,代码ex9-06.jsp清单如下:范围查询,47,JSP,在和之间出版的图书,48,JSP,bookidbooknameauthorpublisher pubdateprice typequantity,49,JSP,50,JSP,9.3.5 复合条件查询例9.7(P246):输出数据表booktable中某个类别、某时间后出版的图书。用户在界面(ex9-07.html)中输入类别和日期,提交给ex9-07.jsp处理,输出符合查询条件的图书。分析:其关键查询语句为Select*From booktable where type=+b_typen

30、ame+and pubdate=+e_pubdate+,复合条件查询,51,JSP,(2)代码ex9-07.html清单如下:复合查询应用案例 根据类别和出版日期查询图书 查询 类 之后出版的图书,52,JSP,(3)代码ex9-07.jsp清单如下:复合查询查询类在后出版的图书,53,JSP,=+e_pubdate+);%,54,bookidbooknameauthorpublisher pubdateprice typequantity,55,JSP,56,JSP,9.3.6 排序查询在SQL语句中应用Order By子语句,对记录进行排序。例9.8(P249):用户在界面(ex9

31、-08.html)选择排序项目,提交给ex9-08.jsp处理,根据用户要求排序输出图书。分析:其关键查询语句为Select*From booktable Order By+s_rname+,排序查询,57,JSP,代码ex9-08.html清单如下:排序查询应用案例排序查询 按出版日期排序 按书号排序 按价格排序,58,代码ex9-08.jsp清单如下:排序查询按排序,59,60,JSP,9.4 添加记录1.应用SQL语句添加新记录 例9.9(P251):管理员在界面(ex9-09.html)输入需要添加倒数据库新书的数据,并把这些数据提交给ex9-09.jsp处理。在ex9-09.jsp用

32、SQL的Insert命令向booktable数据表插入一条新的图书记录,并显示该条记录。分析:其关键查询语句为Insert Into booktable(bookid,bookname,author,publisher,pubdate,price,type,quantity)Values(+s_bkid+,+s_bkname+,+s_authorname+,+s_bkpublisher+,+s_bkpubdate+,+s_bkprice+,+s_bktype+,+s_bkquantity+);,添加新记录,61,代码ex9-09.html清单 添加记录应用案例向数据库添加新记录 书 号:书 名

33、:作 者:出版社:出版日期:价 格:类 别:数 量:,62,ex9-09.jsp代码清单 添加记录%request.setCharacterEncoding(GB2312);String s_bkid=request.getParameter(bkid);if(s_bkid=null)s_bkid=;String s_bkname=request.getParameter(bkname);if(s_bkname=null)s_bkname=;String s_authorname=request.getParameter(authorname);if(s_authorname=null)s_a

34、uthorname=;,63,JSP,String s_bkpublisher=request.getParameter(bkpublisher);if(s_bkpublisher=null)s_bkpublisher=;String s_bkpubdate=request.getParameter(bkpubdate);if(s_bkpubdate=null)s_bkpubdate=;String s_bkprice=request.getParameter(bkprice);if(s_bkprice=null)s_bkprice=;String s_bktype=request.getPa

35、rameter(bktype);if(s_bktype=null)s_bktype=;,64,String s_bkquantity=request.getParameter(bkquantity);if(s_bkquantity=null)s_bkquantity=;%新添加的记录,65,JSP,9.5 更新记录 1.应用SQL语句更新记录 例9.10(P255):管理员在界面(ex9-10.html)输入需要更新数据的图书书号,并把更新的数据提交给ex9-10.jsp处理。在ex9-10.jsp用SQL的Update语句更新记录,并输出更新后的记录。分析:其关键语句为update book

36、table Set quantity=+s_bkquantity+where bookid=+s_bkid+;,更新记录,66,JSP,ex9-10.html代码清单:更新记录应用案例更新新记录 输入需要更新数量的图书书号:输入新的数量:,67,JSP,ex9-10.jsp代码清单添加记录新添加的记录,68,JSP,69,JSP,9.6 删除记录1.应用SQL语句删除记录 例9.11(P58):管理员在界面(ex9-11.html)输入需要删除图书的书号,并把要删除的书号数据提交给ex9-11.jsp处理。在ex9-11.jsp中,用SQL的Delete语句将该记录删除,并输出删除后的booktable数据表。分析:其关键语句为Delete From booktable Where bookid=+s_bkid+;,删除记录,70,JSP,代码ex9-11.html清单 删除记录应用案例删除记录 输入需要删除的图书书号:,71,代码ex9-11.jsp清单 删除记录删除后的记录,72,bookidbookname author publisher pubdateprice type quantity,73,74,JSP,作业与实验,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号