第10章数据库访问

上传人:无*** 文档编号:172050641 上传时间:2022-11-30 格式:PPT 页数:172 大小:1.34MB
收藏 版权申诉 举报 下载
第10章数据库访问_第1页
第1页 / 共172页
第10章数据库访问_第2页
第2页 / 共172页
第10章数据库访问_第3页
第3页 / 共172页
资源描述:

《第10章数据库访问》由会员分享,可在线阅读,更多相关《第10章数据库访问(172页珍藏版)》请在装配图网上搜索。

1、第第10章章 数据库访问数据库访问 主要内容 几乎所有的基于Web的应用程序都使用到数据库,本章主要讨论 与数据库有关的技术 SQL语言中的常用语句 通过ADO使用数据库 通过ADO中的记录集使用数据库 本章目录例2:插入一条静态记录 例1:显示通讯录中全部记录10.2 设置ODBC数据源 例3:将表单中的输入插入到数据表中 10.1 网站数据库技术概述 本章小结 习题10.3 使用SQL语言 例5:通过选择来删除记录例6:更改某一记录例4:删除满足条件的记录例7:通过表单输入修改内容例8:记录的显示和添加例9:修改数据例10:成批修改记录10.4 通过ADO使用数据库 10.5 通过记录集对

2、象使用数据库 例11:删除数据 例12:分页显示记录10.1 网站数据库技术概述 数据库是存放大量用户信息的场所,几乎所有的基于Web的应用程序都使用到数据库,通过网页形式访问数据库也是本课程中必不可少的内容。这里介绍CGI,IDC,ASP中与数据库有关的技术CGI程序与数据库 在使用VB编写的CGI程序中,可以使用DAO和RDO提供的对象,直接打开数据库并创建记录集,形式如下:set DB=OpenDatabase(“数据库文件路径”)set rs=DB.OpenRecordSet(“数据库中的表名”)由于使用实际的文件路径,应用程序和数据的提供者密切相关。参考:网页中使用CGI程序例IDC

3、技术与数据库 引入IDC(Internet Database Connector)之后,人们使用IDC技术,在ODBC(开放式数据库连接)的支持下,通过执行SQL(结构化查询语言)语句,完成对数据库记录的查询、添加、更新和删除操作,并通过模板文件来规定结果的输出形式。IDC技术与数据库 使用IDC技术,可以方便地完成数据库应用系统的编程,应用程序和数据提供者无关。但IDC技术的缺点是交互性较差。参考:网页中使用IDC技术例ASP中的数据库 ADO(ActiveX Data Objects)是一组接口,它通过系统级编程接口OLE DB,提供了一个应用程序级的数据访问对象,它易于使用,与编程语言无

4、关,与提供者无关,它通过ODBC支持,可以访问几乎所有类型的数据库。ASP中的数据库 当ASP脚本中需要访问数据库时,可以创建ADO数据对象,再通过在数据对象上执行SQL语句,来操作数据库,或者通过进一步创建功能强大的记录集对象,通过记录集对象上的有关方法,方便、灵活地操作数据库中的数据。最后得到的结果可以组织成html文档发送到客户端。ASP中的数据库 在ASP中访问数据库,需要掌握以下有关内容:数据库及数据表的建立ODBC数据源的设置方法 SQL语句编写ADO数据对象的创建和操作记录集对象的创建和操作数据的组织与输出10.2 设置ODBC数据源 通过设置ODBC数据源,ASP脚本程序可以用

5、统一的方式使用各种不同类型的数据库。这样,当数据库环境发生变化时,只需简单地重新设置ODBC数据源,就可以在新的数据库环境下使用了。应用程序几乎不要作任何改动。10.2 设置ODBC数据源 ODBC实质上只是一个中间软件,它能够将通用的SQL语句转换为对某种数据库的具体操作。要设置ODBC数据源,可通过系统的控制面板来实现,具体操作步骤如下:打开控制面板 单击开始、设置、控制面板显示如图:10.2 设置ODBC数据源 注意:Windows2000中设置ODBC数据源在控制面板中的管理工具下进行:10.2 设置ODBC数据源 双击ODBC 数据源(32bit)图标,出现如图所示。10.2 设置O

6、DBC数据源 为确保计算机的所有用户都能访问新的ODBC数据源,选择系统DSN有。10.2 设置ODBC数据源(3)单击添加,创建一个新的数据源。创建一个新的数据源 出现如下图:ODBC Access 设置窗口 单击完成,出现如下图:命名数据源 填写数据源名,如Northwind。并输入需要的描述(可省):选择数据库文件 通过标准打开文件对话框,选择作为数据源的数据库文件。确定设置 确定设置,显示如下图:完成设置 完成设置,可看到已设置的数据源:10.2 设置ODBC数据源 注意:若你刚使用Access数据库环境创建数据库及表,还没有退出这一环境时,这步“选取”数据库操作可能会得到“非法目录”

7、的提示。此时只需先关闭数据库,并退出Access环境即可。10.3 使用SQL语言 SQL(Structured Query Language),结构化查询语言,用于查询、更新和操作关系数据库。本节主要讨论SQL的四个基本语句,即:查询(SELECT)插入(INSERT)删除(DELETE)修改(UPDATE)准备知识 在讨论之前,有必要对数据库的基本概念作一介绍。(1)表(2)记录(3)索引(4)数据库(1)表 表是一种按行与列排列的相关信息的逻辑组,例如某厂的人事挡案表。表中每一列在数据库中称作一个字段。表中有什么样的字段,每个字段中可以存放什么类型数据,这些信息决定了一个表的基本结构。(

8、2)记录 在表中,每个工作人员的相关信息都存放在表的一行中,被称为一个记录。一个表也就成了一个记录的集合(RecordSet)一般来说,数据库中表的任意两行都不能完全相同。(3)索引 为了更快地访问数据,大多数数据库都使用索引。数据库表的索引类似于书的目录一样,它也是一个表,索引表中按照一定的顺序存放了数据表中经常要查询的一些重要数据及这些数据对应于表中的位置。对数据库进行查询时,系统可以首先查找索引表,再根据索引表中的记录位置找到数据记录。(4)数据库 通常一个数据库由若干个表构成。或者说数据库是表的集合。以下分别介绍SQL中的常用语句。1查询(SELECT)Select语句用于从数据库中获

9、得一些信息,如从一个表中获得部分记录的部分字段内容,从多个表中组合形成一个新的记录集等。1查询(SELECT)Select语句的一般格式如下:SELECT DISTINCT项目名称表FROM 表名1,表名2,WHERE 条件GROUP BY 表达式HAVING 条件ORDER BY 字段名DESC|ASC 1查询(SELECT)其中:(1)DISTINCT指出若结果记录集中有重复记录时,只取其中一条。例如:为了从基本情况表中了解本单位有多少种不同的职称,可使用如下查询形式:SELECT DISTINCT 职称 FROM 基本情况表其中“基本情况表”是数据库中的一个表名,而“职称”为该表中的一个

10、字段名。1查询(SELECT)(2)项目名称表可以由多个项目用逗号分隔,每个项目可以是字段名或表达式,字段名前可以指出字段所属的表名。例如:为了得到基本情况表中的所有记录,形式如下:SELECT*FROM 基本情况表例如:为了得到学习情况表中的学号和总分数据:SELECT 学号,数学+语文+学习情况表.英语AS 总分 FROM 学习情况表1查询(SELECT)当选择内容是一个表达式时,后面用AS引导一个名称,作为结果记录集的字段名。例如:为了从学习成绩表中得到全部同学的数学平均分,可使用如下形式:SELECT AVG(数学)AS 平均分 FROM 学习情况表其中:AVG是SQL中可以使用的集合

11、函数作为结果记录集的字段名1查询(SELECT)项目名称表中常用的集合函数还有COUNT(求记录条数)、SUM(求和)、MAX(求最大值)和MIN(求最小值)等。当需要表示选择全部字段时,用“*”表示。1查询(SELECT)(3)WHERE后的条件可以是简单的关系式,如:职称=工程师也可以是由“AND”、“OR”和“NOT”连接起来的几个关系式,如:SELECT 书名 FROM 书目表 WHERE 类型=文学 AND 价格25 1查询(SELECT)(4)GROUP BY项可根据某一表达式的值将记录分组,而HAVING可确定某一组是否满足条件。例如:为了从选修课程学生名单表中得到选修人数大于4

12、0的课程号和人数,可使用如下形式的查询:SELECT 课程号,COUNT(课程号)AS 人数 FROM 名单 GROUP BY 课程号 HAVING COUNT(课程号)=40 1查询(SELECT)(5)ORDER BY项用于将结果记录按某一字段值进行排序输出,ASC选项表示升序,DESC表示降序。例如:为了将学习成绩表按数学成绩从高到低输出,可使用如下形式查询:SELECT*FROM 学习成绩表 ORDER BY 数学 DESC 1查询(SELECT)(6)除了以上基本格式外,还可以在SELECT 后面直接跟“TOP n PERCENT”来指出只返回特定数目的记录,或前面一定百分比的记录。

13、例如:要从学生基本情况表中返回2000年入学的前25名学生的姓名,可使用如下形式:SELECT 姓名 TOP 25 FROM 基本情况表 WHERE 入学年份=1994 2插入(INSERT)Insert语句用于向表中添加一个或多个记录。可以将一组值作为一个记录追加到表中,形式为:INSERT INTO 表名(字段名表)VALUES(值的列表)其中:如果“值的列表”中包含了所有字段的值,则格式中字段名表可以省略。“字段名表”和“值的列表”中各数据的类型必须保持一致,个数也要保持一致。2插入(INSERT)例如:在只包含姓名和年龄的学生表中插入一个姓名为“张三”,年龄为23的记录的形式如下:IN

14、SERT INTO 学生表 VALUES(张三,23)其中字符型常量“张三”用单引号括起来,数值型常量23不用定界符。如果学生表中还有其它字段,则上述语句执行时会产生错误。2插入(INSERT)可以将查询的结果插入到一个表中,形式如下:INSERT INTO 目标表(字段名表)SELECT 子句部分3删除(DELETE)Delete语句可从表中删除满足一定条件的一个记录或一组记录。使用形式如下:DELETE FROM 表名 WHERE 条件其中,表名指出需要删除一个或多个记录的数据表名称。该命令一次可能删除多个记录。3删除(DELETE)例如:由于老职工的退休,需要从工资表中删除年龄大于60岁

15、的全部人员,可以使用如下形式的SQL语句:DELETE FROM 工资表 WHERE 年龄=603删除(DELETE)注意:当删除记录之后,不能取消此操作。如果想要知道哪些记录将被删除,可以首先使用相同条件的查询观察结果,然后运行删除操作。随时将数据做备份副本。如果误删除记录,可以从备份副本中将数据恢复。4修改(UPDATE)Update命令可以更改指定表中,满足指定条件的一个或多个记录的某些字段的值。使用形式如下:UPDATE 表名 SET 字段=值,字段=值,WHERE 条件 其中,表名指出要更改的数据表名,SET子句后的“字段=值”表示将某个值赋给对应的字段。WHERE后的条件用来指出被

16、更新的记录应符合的条件。4修改(UPDATE)例如需要为联合王国的一家公司增加10%的订货量和3%的货运,对应的SQL语句如下:UPDATE 订货表SET 订货量=订货量*1.1,货运=货运*1.03WHERE 公司名称=UK 注意:UPDATE 不生成结果记录集。而且当使用更新操作更新记录之后,不能取消这次操作。如果想知道哪些记录将被更新,只能事先用相同条件的查询操作来观察。4修改(UPDATE)注意:随时注意维护数据的复制备份。如果更新错了记录,可从备份副本中恢复这些数据。5建立数据表和删除数据表 可以使用CREATE命令来创建一个新的表格,其使用形式为:CREATE TABLE 表名(字

17、段名 数据类型NOT NULL,字段名 数据类型NOT NULL,)例如:CREATE TABLE 学生(学号 INTEGER,姓名 CHAR(8),性别 CHAR(2)5建立数据表和删除数据表 一旦创建了一个数据表,就可以使用上面介绍的INSERT命令进行添加数据,以及用其它命令进行相应的操作。如果一个数据表不再有用了,可以使用DROP命令来删除这个数据表。其使用格式为:DROP TABLE 表名 注意:删除表同时也将表中的全部数据删除,应谨慎使用。10.4 通过ADO使用数据库 应用ADO(ActiveX Data Object)技术实现网站数据库查询的操作的几个步骤:建立数据库在数据库中

18、创建数据表建立ODBC数据源(见第2节)在脚本中利用ADO对象进行数据库中表的操作 用任意一种数据库10.4 通过ADO使用数据库 应用ADO进行数据库设计一般有两种方式,一种是直接在连接对象上执行SQL语句,完成相应的操作。另一种方式是通过创建功能强大的记录集对象,再在记录集对象上进行相应的操作。10.4 通过ADO使用数据库 第一种方式主要用于能使用简单的SQL语句直接能完成操作的场合,如插入一条已知数据的记录,删除一些满足简单条件的记录,对某一记录进行简单的更改,或单纯显示满足简单条件的记录,在这种方式下,除了查询操作外,不生成记录集就能完成所需的操作。本节只讨论这种方式。1打开数据库

19、在使用控制面板建立好ODBC数据源后,就可以使用“Server.CreateObject”建立一个数据库连接对象,形式如下:Set Conn=Server.CreateObject(“ADODB.Connection”)其中:Conn为连接对象变量名,Server为系统内置的服务器对象。1打开数据库 通过连接对象的“Open”方法打开数据库,形式如下:Conn.Open“DSN=数据源名称;UID=sa;PWD=;”其中:数据源名称即建立ODBC数据源时给出的名称,如:Conn.Open“DSN=TXL;UID=sa;PWD=;”UID后指出用户标识,sa是Access数据库中的缺省用户,PW

20、D后面指出用户sa的口令,Access中用户sa的默认口令为空,所以直接用分号。1打开数据库 在SQL Server中一般要求为用户sa设置口令,若设有口令,则在格式中应写出口令。在Access数据库中,当使用缺省的用户sa时,可以将连接对象的打开操作简写为如下形式:连接对象变量名.Open“数据源名称”而对于SQL数据库环境,连接对象的“Open”方法需要指出完整的参数。不设置ODBC打开Access数据库 Set Conn=Server.CreateObject(“ADODB.Connection”)Conn.open Provider=Microsoft.Jet.OLEDB.4.0;Da

21、ta Source=mydb.mdb;User Id=sa;Password=;其中:mydb.mdb为当前目录中的数据库,sa为用户名,口令为空。打开SQL Server数据库 set conn=server.createobject(adodb.connection)conn.open PROVIDER=MSDASQL;DRIVER=SQL Server;SERVER=(local);DATABASE=cyq;UID=sa;PWD=;2执行SQL语句 可以通过(上面创建的)连接对象的“Exceute”方法来执行一条SQL语句,以实现对数据库的操作,如下所示:Set RS=Conn.Exec

22、ute(SQL语句)这里的“SQL语句”可以是任何一条语句,Conn是已创建并打开的数据库连接对象名。这条指令建立了一个RecordSet(记录集)对象RS,通过这一对象,可实现显示数据库记录内容。2执行SQL语句 由于除查询操作外不生成结果记录集,所以对于像删除、修改或插入操作,可以使用如下形式:Conn.Execute(SQL语句)即不返回记录集。3显示结果 刚生成的记录集是自动打开的,记录指针指向第一条记录,假设记录集变量名为RS,则可以使用如下各种形式获得数据:RS(“字段名”)=读取当前记录中指定字段的值 RS(i)=当前记录中第i个字段的值RS(i).Name=第i个字段的名称(I

23、从0开始)RS.Fields.Count=当前记录集的字段总数 3显示结果 显示完当前记录内容后,可使用以下方式移动记录指针:RS.MoveFirst 将数据指针指向第一个记录RS.MoveLast 将数据指针指向最后一个记录RS.MoveNext 将数据指针指向下一个记录RS.MovePrev 将数据指针指向前一个记录 使用RS.EOF判别记录是否结束。一般情况,在开始显示前应首先用它来判别记录集是否为空。4关闭数据库 在所有操作和显示结束后,需要使用下述指令关闭记录集和数据库连接:RS.Close Conn.Close 由于Access数据库同时只能维持一个连接,如果用户不关闭连接,将使其

24、它用户无法打开它。注意次序5释放对象 可以使用如下形式来释放对象所占的资源:Set RS=nothing Set Conn=nothing 使用例子 例1:显示通讯录中全部记录 网页内容全部人员名单如下:姓名 性别 出生日期 联系电话    爱好建立连接,并打开选择全部记录使用例子 例1:显示通讯录中全部记录 网页内容(续)%While Not objRS.EOF Response.Write objRS(姓名) &objRS(性别) Response.Write objRS(出生日期) &ob

25、jRS(联系电话) Response.Write objRS(爱好)&objRS.MoveNext Wend objRS.close:objConn.close Set objRS=Nothing Set objConn=Nothing%关闭并撤消记录集,关闭并撤消连接依次显示个记录内容例1:显示通讯录中全部记录 浏览结果为了得到如图结果,需要完成以下工作:例1:显示通讯录中全部记录 准备工作为了测试本例的结果,需要首先通过某种数据库环境来建立数据库及数据表,数据表(名为txlb)中包含“姓名”、“性别”、“出生日期”、“联系电话”和“爱好”五个字段,出生日期为日期/时间类型,其它均

26、为文本类型。在表中输入若干个记录,为便于验证以后各例的结果,输入内容可参照表10-2中的数据。例1:显示通讯录中全部记录 准备工作通过控制面板,设置名为“txl”的系统DNS,指向建立的数据库。本例代码必须小心输入,任何错误都是致命的。如果你使用的是Windows 2000操作系统的话,还要设置使用不是默认的缓冲输出方式。在Internet信息服务管理器窗中,右击默认Web站点,选择属性。例1:显示通讯录中全部记录在属性对话框的主目录选项卡中单击配置。点击测试在应用程序配置对话框的应用程序选项卡中关闭“启用缓冲”复选框。使用例子 例2:插入一条静态记录 网页内容插入完成在SQL Server数

27、据库中,改为99-11-12 建立连接,并打开关闭并撤消连接实现插入例2:插入一条静态记录 本例作用为:在数据表txlb中插入一条已知记录,其中姓名为“李想”,性别为“女”,出生日期为“89-11-18”,联系电话为“0519-3344557”,爱好为“音乐”。本例完成后可用上例查看结果。执行本例执行上例查看结果使用例子 例3:将表单中的输入插入到数据表中 网页结构%Option Explicit Dim objConn,objRS,strQ if request.servervariables(CONTENT_LENGTH)0 then 获得表单内容,构造SQL语句,实现插入 else 显示

28、表单,等待输入end if%是否有表单输入变量声明例3:将表单中的输入插入到数据表中 获得表单内容,构造SQL语句,实现插入 Set objConn=Server.CreateObject(ADODB.Connection)objConn.Open txl strQ=INSERT INTO txlb(姓名,性别,出生日期,联系电话,爱好)VALUES strQ=strQ&(&request(xm)&,&request(xb)&,#strQ=strQ&request(csrq)&#,&request(lxdh)&,“strQ=strQ&request(ah)&)objConn.Execute s

29、trQ objConn.close Set objConn=Nothing%插入完成 构造SQL语句实现插入建立连接,并打开关闭并撤消连接例3:将表单中的输入插入到数据表中 显示表单,等待输入添加记录form method=POST action=姓名:性别:出生日期:联系电话:爱好:表单发送到自己例3:将表单中的输入插入到数据表中 浏览结果单击测试本例注意:表单中输入内容时不能空缺。例3:将表单中的输入插入到数据表中 验证本例为验证本例先用“response.write strQ”代替“objConn.Execute strQ”,并插入一条“response.end”,观察生成的SQL语句的

30、正确性。当你在表单中输入如上图的数据时,正确的SQL语句应该如下:INSERT INTO txlb(姓名,性别,出生日期,联系电话,爱好)VALUES(张三,男,#90-03-12#,0519-1234567,胡闹)当正常插入后,使用第1个例子的脚本检查添加的正确性。执行前例查看结果使用例子例4:删除一些满足条件的记录 网页结构%Option ExplicitDim objConn,objRS,strQif request.servervariables(CONTENT_LENGTH)0 then 接受表单输入,完成删除操作 else 显示表单,等待输入end if%变量声明判断条件是否已经输

31、入例4:删除一些满足条件的记录 显示表单,等待输入删除记录 form action=method=POST 姓名:性别:爱好:表单发送到自己例4:删除一些满足条件的记录 接受表单输入,完成删除操作 Set objConn=Server.CreateObject(ADODB.Connection)objConn.Open txl strQ=DELETE FROM txlb if request.form(xm)then 获得输入的姓名,形成SQL字符串,实现删除操作 elseif request(xb)and request(ah)then 获得输入的性别和爱好,形成SQL字符串,实现删除操作

32、else 显示没有按要求选择要删除的记录 end if objConn.close Set objConn=Nothing表单中输入了姓名建立连接,并打开表单中输入了性别和爱好关闭并撤消连接例4:删除一些满足条件的记录 获得输入的姓名,形成SQL字符串,实现删除操作 strQ=DELETE FROM txlb s t r Q =s t r Q&W H E R E 姓 名 L i k e%&request.form(xm)&%objConn.Execute strQ response.write 删除完成采用模糊查询获取表单中输入的姓名例4:删除一些满足条件的记录 获得输入的性别和爱好,形成SQ

33、L字符串,实现删除操作 strQ=DELETE FROM txlb strQ=strQ&WHERE 性别=&request(xb)&AND 爱好=strQ=strQ&request(ah)&objConn.Execute strQ response.write 删除完成获取表单中输入的性别获取表单中输入的爱好例4:删除一些满足条件的记录 浏览结果本例中实现了删除姓名中包含某些特定符号的人员,或删除指定性别并且具有指定爱好的人员。输入形式有如下两种:单击这里运行本例单击这里查看结果使用例子例5:通过选择来删除记录 网页结构获得脚本文件名建立连接,并打开没有选定记录时关闭并撤消连接例5:通过选择来

34、删除记录 显示全部记录,并舔加删除该记录的超连接 Set RS=objConn.Execute(SELECT 姓名,性别 FROM txlb)do while not RS.EOF response.write&RS(姓名)&RS(性别)response.write 删除 RS.movenext loop RS.close set RS=nothing获得所有记录建立超连接把姓名作为参数关闭并撤消记录集例5:通过选择来删除记录 删除选择的记录,并提供选择下一个记录的超连接 sqlstr=delete from txlb where 姓名=&request(xm)&objConn.execute

35、(sqlstr)response.write 删除完成 response.write 继续删除其它记录执行删除操作根据姓名形成SQL语句提供超连接例5:通过选择来删除记录 浏览结果单击这里测试本例使用例子例6:更改某一记录,将“李梦”的性别改为“女”,联系电话改为“0519-4373633”。网页内容 建立连接,并打开按指定要求完成对表的修改关闭并撤消连接例6:更改某一记录 浏览结果本例浏览无显示,执行后可通过执行例1来观察运行本例运行例1,观看结果使用例子例7:通过表单输入修改内容建立连接,并打开是否输入了新内容关闭并撤消连接例7:通过表单输入修改内容 显示记录供选择,选择后显示表单供输入新

36、内容if request.servervariables(QUERY_STRING)=then 显示全部记录,并舔加修改该记录的超连接Else 读取所选择记录,作为初始内容显示表单 end if 是否已经指定记录例7:通过表单输入修改内容 显示全部记录,并舔加修改该记录的超连接 Set RS=Conn.Execute(SELECT 姓名,性别 FROM txlb)response.write 请选择要修改的记录 do while not RS.EOF response.write&RS(姓名)&RS(性别)&response.write 修改 RS.movenext loop RS.close

37、 set RS=nothing获得所有记录建立超连接把姓名作为参数关闭并撤消记录集例7:通过表单输入修改内容 读取所选择记录,作为初始内容显示表单 Set RS=Conn.Execute(SELECT*from txlb where 姓名=&request(xm)&)%请输入新的内容 form action=method=POST input type=hidden name=xm value=姓名:性别:input type=text name=xb value=联系电话:input type=text name=lxdh value=0)Then 获取表单数据,并添加到数据表中End If

38、显示数据表中的全部记录提供一个输入新记录的表单例8:记录的显示和添加 变量声明,创建连接和记录集 0 Then objRS.CursorLocation=adUseServer objRS.Open txlb,objConn,adOpenKeyset,adLockOptimistic,adCmdTable objRS.AddNew objRS(姓名)=strXM strDh=Left(Trim(Request.Form(lxdh),24)If Len(strDh)0 Then objRS(联系电话)=strDh End If 取姓名前40个符号添加记录打开记录集保存姓名保存联系电话例8:记录的

39、显示和添加获取表单数据,并添加到数据表中(续)If isdate(Request.Form(csrq)then objRS(出生日期)=Request.Form(csrq)end if If Request.Form(xb)then objRS(性别)=request.Form(xb)If Request.Form(ah)then objRS(爱好)=request.form(ah)objRS.Update objRS.CloseElse Response.Write 请提供你的姓名!End If保存出生日期更新记录集保存性别保存爱好关闭记录集例8:记录的显示和添加 显示数据表中的全部记录ob

40、jRS.CursorLocation=adUseClientobjRS.CursorType=adOpenForwardOnlyobjRS.LockType=adLockReadOnlyobjRS.Open SELECT*FROM txlb,objConn,adCmdText%姓名  性别 出生日期 联系电话  爱好设置客户端游标打开记录集设置记录只读显示标题行设置向前游标例8:记录的显示和添加 显示数据表中的全部记录%While Not objRS.EOF strOut=objRS(姓名)&:&objRS(性别)&objRS(出生日

41、期)strOut=strOut&objRS(联系电话)&objRS(爱好)Response.Write Server.htmlEncode(strOut)&objRS.MoveNextWendobjRS.close:objConn.closeSet objRS=Nothing:Set objConn=Nothing关闭和释放记录集和连接显示各个记录例8:记录的显示和添加 提供一个输入新记录的表单FORM ACTION=METHOD=POST姓名:性别:出生日期:联系电话:爱好:发送到自身例8:记录的显示和添加 本例在执行时首先显示如图所示。例8:记录的显示和添加 当在表单中输入如图的内容后,单

42、击表单例8:记录的显示和添加 显示形式如图所示。可以看出,记录已经添加进去了。验证本例使用举例例9:修改数据,将“李梦”的联系电话从7位升至8位,规则是在前面加上原来的最高位。网页内容脚本改变表中"李梦"的联系电话嵌入常量说明文件建立连接,并打开例9:修改数据网页内容(续)%Set objRS=Server.CreateObject(ADODB.Recordset)objRS.CursorLocation=adUseServer objRS.CursorType=adOpenForwardOnly objRS.LockType=adLockOptimistic objRS.

43、Open SELECT*FROM txlb WHERE 姓名=李梦,objConn,adCmdText lxdh=objRS(联系电话)objRS(联系电话)=left(lxdh,6)&mid(lxdh,6)Response.Write 联系电话改成了&objRS(联系电话)&.创建记录集对象打开记录集修改联系电话例9:修改数据网页内容(续)if len(objRS(联系电话)=13 then objRS.Update Response.Write 记录集被更新.else objRS.CancelUpdate Response.Write 取消对记录集的更新.end if Response.W

44、rite 现在的联系电话是:&objRS(联系电话)&.objRS.Requery%联系电话特殊处理更新内存例9:修改数据网页内容(续)重新显示记录内容:%strOut=objRS(姓名)&objRS(联系电话)Response.Write Server.htmlEncode(strOut)&objRS.close:objConn.close Set objRS=Nothing:Set objConn=Nothing%关闭和释放记录集和连接例9:修改数据本脚本可连续执行两次,观察不同的结果,完成后可以用例1中的脚本显示全部记录,本例代码显示结果如图所示。执行本例执行例1显示全部记录执行例6将数

45、据记录还原使用举例例10:成批修改记录,将所有区号为“0519”的联系电话进行升位处理。网页内容脚本升级表中区号为"0519"的联系电话嵌入常量说明文件建立连接,并打开例10:成批修改记录网页内容(续)重新显示记录内容:%while not(objRS.EOF)strOut=objRS(姓名)&objRS(联系电话)Response.Write Server.htmlEncode(strOut)&objRS.MoveNext Wend objRS.close:objConn.close Set objRS=Nothing:Set objConn=Nothing%成批更新更新

46、内存关闭和释放记录集和连接例10:成批修改记录 本例中,记录的锁定类型设置为成批更新时锁定,用赋值的形式逐个更改记录,最后用记录集上的UpdateBatch方法一次性更新数据库。本例浏览结果如图所示。执行本例使用举例例11:删除数据 网页结构%Dim objConn,objRS,strQif request.servervariables(CONTENT_LENGTH)0 then 删除满足条件的记录else 显示表单,等待输入条件end if%是否已经输入条件例11:删除数据删除满足条件的记录 创建并打开连接,创建并打开记录集 if request.form(xm)then 删除特定姓名的记

47、录 elseif request(xb)and request(ah)then 删除特定性别并具有特定爱好的记录 else response.write 没有按要求选择要删除的记录 end if 关闭并撤消记录集,关闭并撤消连接输入姓名时输入性别和爱好时例11:删除数据创建并打开连接,创建并打开记录集 Set objConn=Server.CreateObject(ADODB.Connection)objConn.Open txl set objRS=Server.CreateObject(ADODB.Recordset)objRS.CursorLocation=adUseServer obj

48、RS.CursorType=adOpenDynamic objRS.LockType=adLockOptimistic o b j R S.o p e n s e l e c t *f r o m txlb,objConn,adCmdText建立连接,并打开创建记录集对象,并打开,选择所有记录例11:删除数据删除特定姓名的记录 objRS.Filter=姓名 like%&request.form(xm)&%if not objRS.EOF then objRS.MoveLast while not objRS.BOF objRS.Delete objRS.MovePrevious wend r

49、esponse.write 删除完成 设置过滤器从后向前删除记录例11:删除数据删除特定性别并具有特定爱好的记录 while not(objRS.EOF)if objRS(性别)=request(xb)and objRS(爱好)=request(ah)then objRS.Delete end if objRS.MoveNext wend response.write 删除完成 例11:删除数据关闭并撤消记录集,关闭并撤消连接 objRS.close:objConn.close Set objRS=Nothing:Set objConn=Nothing例11:删除数据显示表单,等待输入条件 删

50、除记录 form action=method=POST 姓名:性别:爱好:执行本例执行例1观察结果例11:删除数据本例中使用了记录集的以下属性和方法:(1)Filter属性:对一个RecordSet对象设定过滤条件以过滤数据。(2)BOF属性:如果当前记录的位置位于记录集第一条记录之前时,返回TRUE;否则返回FALSE。(3)Delete方法:删除一个RecordSet对象的当前记录。(4)MovePrevious方法:将记录指针向前移动一条记录。它和MoveNext方法的移动方向相反。使用举例例12:分页显示记录网页基本思路读取表示需要显示的页号(page)创建并打开连接,创建并打开记录集

51、,记录指针定位到指定位置显示页号显示该页各个记录内容显示前一页和后一页按钮例12:分页显示记录网页内容转到:设置每页行数求页数建立并打开记录集定位到指定页例12:分页显示记录网页内容%For intI=1 to TotalPages response.write response.write 第&intI&页  &vbcrlf Next response.write 姓名 性别 出生日期 联系电话 For intI=1 to objRS.PageSize If objRS.EOF Then Exit For Response.Write objRS

52、(姓名) &objRS(性别) Response.Write objRS(出生日期) &objRS(联系电话)&objRS.MoveNext Next显示当前页各记录列出页的列表便于快速转移例12:分页显示记录网页内容objRS.Close:objConn.Close Set objRS=Nothing:Set objConn=Nothing response.write 共&TotalPages&页,当前为第&page&页 If Page 1 Then response.write<<上一页 end if If Page TotalPages The

53、n response.write 下一页>>end if%显示当前位置关闭和释放记录集和连接显示前一页按钮显示下一页按钮例12:分页显示记录 本例浏览结果如图所示 例12:分页显示记录 单击下一页后,显示形式如图所示。执行本例例12:分页显示记录 本例中使用的属性和方法主要有:(1)AbsolutePage方法:设定当前记录的位置是在哪一页。(2)PageCount属性:如果一个记录集分成多个页,返回在记录集内记录的页数。(3)PageSize属性:用于设置包含在一个页内记录的数目。(4)CatchSize属性:用于指出允许多少条记录暂存在Catch中。RecordSet对象的其他

54、属性和方法 (5)RecordCount属性:显示一个RecordSet对象中的记录总数。(6)Move方法:在RecordSet对象中移动当前记录指针。本章小结 本章讨论了作为一个访问数据库的应用程序所必须实现的一些功能,包括:记录的显示、添加、删除和修改。由于对数据库的访问涉及很多细节问题,一有不慎,就会产生错误,所以,在验证和实现本章所讨论的例子时,必须十分小心,特别应该注意,字段的数据类型,各种对象的名称,SQL语句的格式等问题。本章小结 对数据库的使用方式可以归纳成两种,即一种是在连接对象上直接执行SQL语句来操作数据库,另一种是通过创建记录集对象来操作数据库。前者适合于完成对数据库

55、的简单操作,而后者提供了强大的操作功能,并且使用灵活。在实际应用中可结合使用。习题 1例10-7中使用了一个hidden表单域,你能不使用它完成相同的功能吗?试修改例10-7中的代码。2结合第1章中关于网页中插入表格的内容,修改本章中的例10-12的代码,让其把记录内容以表格形式输出。3修改例10-1的代码中的SQL语句,让其输出时按出生日期从小到大排列。CGI(通用网关接口)CGI主要用于接收用户的表单信息,进行处理后,结果信息以文档的形式发送。可用于编写CGI程序的语言有很多,如C,VB,Perl等。它的基本原理是,以标准输入文件形式接收表单信息,再以标准输出文件形式,输出需向客户发送的文

56、档信息 其特点是,安全性好,但并发的每个访问各需占用一个进程,并调入多份程序。CGI(通用网关接口)举例 例子中使用VB编写了一个CGI程序,最后生成了名为klhd1.exe的文件(在子目录10中,源文件在其中的CGI子目录中)为了让单击以下按钮得到正确的结果,你需要设置子目录10的安全属性为对everyone是可写入的。(测试完后请改为原来的值)另外系统中若没有安装VB的话,这个例子也不能正确执行。单击运行例子Internet Database Connector 简称IDC,主要用于对数据库的访问和操作。实现IDC分成三个部分:网页中调用IDC文件 实现数据库查询、插入等操作的IDC文件

57、IDC文件输出结果的模板文件 另外还需要设置ODBC数据源 以下举一例加以说明在网页中调用IDC文件形式课务查询课程名称:班 级:任课教师:IDC文件格式Datasource:kbczTemplate:kbcx.htxSQLStatement:+SELECT DISTINCT 教师,班级,课名+FROM kb98+WHERE(%ckmc%=AND%rkjs%=AND%bjmc%=)+OR(课名 like%ckmc%AND%ckmc%)+OR(教师 like%rkjs%AND%rkjs%)+OR(班级 like%bjmc%AND%bjmc%)HTX文件格式查询结果课程名称班 级教师姓名数据源设置过程数据源设置过程数据源设置过程数据源设置过程数据源设置过程数据源设置过程数据源设置过程数据源设置过程执行结果执行结果执行结果执行结果执行结果执行结果单击测试本例

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!