




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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),管理信息系统帮助人们完成需要手工处理的信息处理工作,不仅能够提高工作效率,降低劳动强度,而且能够提升管理信息的质量和水平。管理信息系统的数据存放在数据库
3、中 。,4,数据库,用 户,息,信,管,理,系,统,功,能,模,块,数,据,库,管,理,系,统,用 户,用 户,管理信息系统、数据库管理系统和数据库的关系,5,3. 数据库、表、记录和字段 数据库:数据库中的数据表示为多个表的集合,通过建立表与表之间的关系来定义数据库的结构。 表: 按某一公共结构存储的一组相似数据,它是数据库的基础构件。 记录:表中数据以行、列方式将相关信息排列成逻辑组,表中每一行称为一个记录 字段:表中每一列称为字段 例如,网上书店数据库名为bookshop,库中有7个表:book、userinfo、orderform、orderdetail、notes、employee和
4、publisher。,6,JSP,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
5、条件表达式 (1)在booktable表中检索所有书名 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 boo
6、kid=ISBN ISBN 7-04-012301-0 结果集是:C+程序设计。 (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)
7、模糊查询,在WHERE子句中应用LIKE运算符,可以只选择与用户规定格式相同的记录。用通配符“%”可以代替任何字符串。例如,在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,出版日期:
8、2003-8-1,定价:29.5) : INSERT INTO booktable (bookid, bookname, author, 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,语句如下: UPDA
9、TE booktable SET quantity = quantity-2,11,JSP,4. 删除语句(Delete Statement) 删除由FROM子句列出的、满足WHERE子句条件的一个或多个表中的记录。 DELETE FROM 表名 WHERE条件表达式 例如,在booktable表中删除刚才插入的书号为ISBN 7-04-012301-0的记录,语句如下: DELETE FROM booktable WHERE bookid= ISBN 7-04-012301-0 又如:下条SQL语句的功能将删除表中所有的记录,使用时要特别当心: DELETE FROM booktable,1
10、2,JSP,9.2 JDBC接口技术 9.2.1 JDBC 概述 1. 什么是JDBC JDBC(Java Database Connectivity)接口技术实际上是一种通过Java语言访问任何结构化数据库的应用程序接口(API)。许多数据库系统带有JDBC驱动程序,Java程序通过JDBC驱动程序与数据库连接,执行查询、插入、更改和删除等操作。为能够访问带有ODBC驱动程序的数据库,Sun公司开发了JDBC ODBC Bridge,应用这项技术,Java程序就能够访问带有ODBC驱动程序的数据库。由于大多数数据库系统都带有ODBC驱动程序,所以使用JDBC ODBC Bridge技术Jav
11、a程序可以访问大多数数据库,如:MS SQL Server、Oracle、Sybase、Informix和MS Access等数据库。,2. JDBC 的功能 (1) 与一个数据库建立连接(connection); (2) 向数据库发送SQL语句(statement); (3) 处理数据库返回的结果(resultset)。,13,JSP,3.JDBC访问数据库的四种方式 (1)JDBC-ODBC Bridge驱动程序 JDBC-ODBC桥利用ODBC驱动程序提供JDBC访问。利用微软 ODBC的开放性,只要本地机装有ODBC驱动,采用JDBC-ODBC桥驱动几乎可以访问所有的数据库。 (2)本
12、地API驱动 本地API驱动直接把JDBC调用转变成数据库标准调用,然后再去访问数据库。这种方法也需要本地数据库驱动程序。 (3)网络协议驱动 使用一段纯Java代码,把JDBC调用转换成目标数据库网络协议调用。 (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的
14、图书。本例使用前面生成的bookshoplk数据源,通过JDBC-ODBC桥访问数据库。,JDBC-ODBC Bridge,16, /所有与数据库有关的对象和方法都 在java.sql包中 JDBC建立数据库连接 数 据 查 询 /加载驱动程序 ,17, bookidbooknameauthor publisherpubdateprice typequantity /将名称为bookid的列的内容作为字符型返回 / 只返回年月日 ,18,JSP, ,19,JSP,9.2.4 JDBC建立数据库连接方法详解 1. JDBC建立数据库连接步骤 (1) 加入命令行: (2) 加载驱动程序: Clas
15、s.forName(sun.jdbc.odbc.JdbcOdbcDriver); (3) 建立连接: Connection conn=DriverManager.getConnection(jdbc:odbc:bookshoplk,sa,); (4) 发送SQL语句: Statement stmt = conn.createStatement(); (5)建立ResultSet(结果集)对象: ResultSet rs; (6)执行SQL语句: rs=stmt.executeQuery(SELECT * FROM booktable where bookid=ISBN 7-04-012301-
16、0); / executeQuery:用于产生单个结果集的语句 (7)关闭对象: rs.close(); /关闭ResultSet对象 stmt.close(); /关闭Statement对象 conn.close(); /关闭Connection对象,20,JSP,2. JDBC数据库连接步骤详解 (1) 加入命令行(P234) 所有与数据库有关的对象和方法都在java.sql包中,所以在使用JDBC的程序中必须加入命令行: (2)加载驱动程序(P234) 应用JDBC-ODBC Bridge方式连接数据库,必须先加载JDBC-ODBC Bridge驱动程序,语句如下: Class.forN
17、ame(sun.jdbc.odbc.JdbcOdbcDriver); Class是包java.lang中的一个类,该类通过调用静态方法forName建立JDBC-ODBC桥接器,即加载驱动程序。 由于加载驱动程序时可能产生异常,所以需要异常处理程序段。 try catch(Exception e ) ,21,JSP,(3)建立连接(P235) 要连接一个数据库,必须创建Connection类的一个实例 : Connection conn = DriverManager.getConnection(jdbc:odbc:数据源名,Loginname,Password); 调用DriverManag
18、er.getConnection方法建立与数据库的连接,该方法指定了数据库的位置、用户名和用户口令。DriverManager类位于JDBC的管理层,作用在用户和驱动程序之间。 数据源名是在“控制面板管理工具数据源(ODBC)”中设置的数据源名。Loginname是用户名,Password是用户口令。如果没有为数据源设置用户名和用户口令,连接形式如下: Connection conn = DriverManager.getConnection(jdbc:odbc:数据源名,); 一旦DriverManager.getConnection方法找到了建立连接的驱动程序和数据源,则通过用户名和口令开
19、始与DBMS建立连接,如果连接通过,连接建立完成。,22,JSP,(4) 发送SQL语句(P235) Statement类的对象由Connection 的createStatement方法创建,用于发送不带参数的简单SQL语句,对数据库进行具体操作,如查询、修改等。在执行一个SOL查询语句前,必须用createStatement方法建立一个Statement类的对象。例如: Connection conn =DriverManager.getConnection(jdbc:odbc:bookshoplk,sa,); Statement stmt = conn.createStatement()
20、;,23,JSP,(5)创建结果集对象(P236) 一旦连接到数据库,就可以查询数据表名、列名和有关的信息,并且可以运行SQL语句对数据库的数据进行查询、添加、更新和删除等操作。JDBC提供了ResultSet、DatabaseMetaData和ResultSetMetaData类获取数据库中的信息。 ResultSet类存放查询结果,并通过一套方法提供对数据的访问。它是JDBC中很重要的对象。ResultSet包含任意数量的命名列,可以按名字访问这些列;它也包含一或多个行,可以按顺序自上而下地逐一访问。例如: Statement stmt = con.createStatement(); R
21、esultSet rs; rs=stmt.executeQuery(SELECT * FROM booktable where bookid=ISBN 7-04-012301-0);,24,JSP,当建立一个ResultSet类对象时,它指向第一行之前的位置。ResultSet 对象常用方法如下: getInt(int):将序号为int的列的内容作为整数返回; getInt(String):将名称为String的列的内容作为整数返回; getFloat(int):将序号为int的列的内容作为一个float型数返回; getFloat (String):将名称为String的列的内容作为floa
22、t型数返回; getData(int):将序号为int的列的内容作为日期返回; getData(String):将名称为String的列的内容作为日期返回; next():把行指针移到下一行,如果没有剩余行,则返回false; close():关闭结果集; getMetaData():返回ResultSetMetaData对象。,25,JSP,ResultSetMetaData类实例提供ResultSet中列的名称、数目和类型信息。例如: ResultSetMetaData rsmd; rsmd=Results.getMetaData(); NumCols= rsmd.getColumnCou
23、nt(); ResultSetMetaData对象常用方法如下: getColumnCount():返回ResultSet中的列数; getColumnName(int):返回序号为int的列名; getColumnLabel(int):返回序号为int列暗含的标签; isCurrency(int):如果此列包含有货币单位的一个数字,则返回true; isReadOnly(int):如果此列是只读,则返回true; isAutoIncrement(int):如果此列自动递增,则返回true。,26,例9.2(P237): 输出booktable 表中各列的名称。代码创建了ResultSetMe
24、taData对象rsmd ,并使用getColumnCount()和getColumnName()方法取得booktable表中的列数和列名。, 输出 booktable 表各列的名称 输出 booktable 表各列的名称 ,输出booktable 表列名,27,JSP,记录集中共有 列 ,各列的名称是: / getColumnCount():返回ResultSet中的列数 ,28,(6) 执行SQL语句 Statement对象提供了3种执行SQL语句的方法: executeQuery:用于产生单个结果集的语句,例如select语句。 rs = stmt.executeQuery(SELEC
25、T * FROM booktable); executeUpdate:用来执行insert、delete以及sqlddl(数据定义语句)。 Execute:用来返回多个结果集、多个更新计数或两者组合的语句。,29,JSP,9.3 查询记录 11.3.1 顺序查询 应用结果集Result的next()方法顺序输出一个表里的包含全部字段的所有记录。 例9.3(P238) :顺序输出数据表“ booktable”中的所有记录和所有字段。 分析:使用代码 “ Select * From booktable” 从booktable数据表选择所有的记录,放置在rs结果集中,然后使用rs.next()方法将
26、结果集中的数据顺序显示出来。,顺序查询,30, 顺序查询 顺序输出数据表“ booktable”中包含所有字段的所有记录 bookidbooknameauthorpublisher pubdatepricetypequantity ,31, ,32,JSP,9.3.2 参数查询 数据筛选是指按条件从数据库中选出符合条件的所有记录,由Where子句指定选择记录时要满足的条件。 例 9.4(P240):用户在界面输入查询条件,如出版社的名称,输入的名称提交给ex9-04.jsp处理,输出数据表“ booktable”中需要查询的出版社出版的图书。其关键查询语句为: Select * From bo
27、oktable where publisher=+publishername+,参数查询,33,JSP,ex9-04.html代码清单如下: 参数查询应用案例 图 书 查 询 请输入出版社名称: ,34,ex9-04.jsp代码清单如下: 选择查询 输出数据表booktable中的记录,35, bookidbooknameauthorpublisher pubdateprice %,54, bookidbooknameauthorpublisher pubdateprice,添加新记录,61,代码ex9-09.html清单 添加记录应用案例 向数据库添加新记录 书 号 : 书 名 : 作 者
28、: 出版社: 出版日期: 价 格 : 类 别 : 数 量 : ,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_authorname=; ,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_bkp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 典范英语教学课件
- 第五章换热器第四节传热过程的强化03课件
- Brand KPIs for milk:Molico in Brazil-英文培训课件2025
- 2025年社会工作者中级综合能力测试题及答案
- 口腔正畸基础知识课件
- 2025年注册会计师考试《会计》全真模拟实战试题:考前冲刺试题含答案
- 小学生科技课件教学
- 小学生科学说课稿课件教学
- 2025年多式联运信息平台在物流行业物流行业物流行业物流配送体系中的应用与优化报告
- 2025年3D打印技术在航空航天制造业大规模生产应用深度研究报告
- 整形外科眉眼部手术技术操作规范2023版
- 折线配筋先张梁弯起器的研制与试验研究
- 残疾人保障法法律常识宣传PPT
- 夏季电气设备风险重点管控措施
- 抵制不正当交往
- 抢救车急救药品演示
- 大型演唱会安保活动方案
- 苏教版小学数学六年级上册 《百分数的意义和读写》教学设计、说课稿、教学反思
- 护理工作中的人文关怀课件
- 机械设备需求计划表
- 高校助学贷款结清凭证
评论
0/150
提交评论