《ASP动态网站制作教程》第七章ASP与数据库.ppt
第7章 ASP与数据库,本章主要内容,7.1 数据库的基本概念 7.2 Access数据库简介 7.3 SQL语言简介 7.4 微软数据库访问技术简介 7.5 Connection对象,7.1.1 计算机数据管理技术的发展史,从计算机诞生至今,数据管理技术的发展大致经历了3个阶段,即人工管理阶段、文件系统阶段和数据库系统阶段。1人工管理阶段 在这一阶段,数据很随意的存放在计算机中,并不遵守一定的格式和要求,需要的时候人工进行查找。由于一组数据常常只对应于一种应用程序,因此很难实现多个不同应用程序间的数据资源共享。存在着大量重复数据,信息资源浪费严重。2.文件系统阶段 在这一阶段,信息以文件为单位存储,并且由操作系统统一管理。这样逻辑结构和物理结构分离,数据与程序有了一定的独立性,实现了以文件为单位的共享。3.数据库系统阶段 在这一阶段,用户把数据集中存放在一个或多个数据库中,然后通过数据库管理系统(Data Base Management System,DBMS)来使用数据库中的数据。它和文件系统阶段的主要区别是:用户不必关心数据的具体存放位置和格式,也不必开发专门的程序来管理数据,这些都是由数据库管理系统来完成的。,7.1 数据库的基本概念,7.1.2 数据库的基本术语,所谓数据库按照一定的规则组织和存储在一起,相互关联的数据集合。即把各种各样的数据按照一定的规则组合在一起构成的”数据”的集合。数据库中数据的组织形式一般分为层次型、网状型和关系型三种。其中关系型最为常见,目前使用的数据库基本上都是关系型的。关系型数据库可以看成是由我们日常使用的若干二维表格组成的集合。,7.1 数据库的基本概念,数据库中常用的一些术语:字段:表中纵的一列称作一个字段。记录:表中横的一行称作一条记录。条记录是由若干字段组成的。值:表中纵横交叉位置的数据成为值。表:具有相同字段的一批记录称做一个表。表中每一列代表一个字段,每一行代表一条记录。一个数据库可以包含多个表,但每个表不能同名。这些表可以相互关联,也可以彼此独立。主键:能惟一标识表中每一条记录的字段或字段集称为主键,也称主关键字。如学生基本情况表中的”学号”字段就是主键,因为每名学生都与一个学号相对应,而”姓名”字段由于有可能出现重名的情况,所以不适合做主键。,学生基本情况表,7.1.3 数据库管理系统和数据库应用系统,数据库管理系统是建立、管理、维护和控制数据库,位于用户与操作系统之间的一组计算机软件。数据库管理系统使用户能方便的定义数据和操纵数据,并能够保证数据的安全性、完整性以及发生故障后的系统恢复。基于关系型数据库的数据库管理系统称为关系型数据库管理系统。现在比较流行的大中型关系型数据库管理系统有Oracle、IBM DB2、SQL Server等,它们也被称为服务器数据库。常用的小型关系型数据库管理系统有Access、Visual FoxPro(VFP)等。在ASP中一般使用微软的SQL Server或Access。SQL Server效率较高,但配置起来较为麻烦,移植也比较困难,适合大型网站使用;Access配置简单,移植方便,但效率较低,适合小型网站使用。在本书中以Access为主。数据库应用系统是基于数据库技术开发的面向某一类实际问题的应用软件。,7.1 数据库的基本概念,7.2.1 规划数据库,要开发数据库应用系统,首先要规划自己的数据库,要使数据库设计的比较合理。既包括必要的信息,又能节省数据的存储空间。假设要建立一个学生选课系统,就需要建立一个学生选课数据库,其中可能需要3张表:第1张表(学生表)记录学生的基本信息,包括学号、姓名、性别、出生、班级等字段;第2张表(课程表)记录课程信息,包括课号、课名、学分、任课教师等字段;第3张表(选课表)记录选课信息,包括学号、课号、成绩等字段。第3张表通过学号和课号分别与前两张表建立关系。,7.2 Access数据库简介,7.2.2 使用Access 2003创建数据库,(1)依次选择【开始】|【程序(P)】|【Microsoft Office】|【Microsoft Office Access 2003】命令就可以启动Access 2003。首先出现的是Access 2003的主窗口,如下图所示。,7.2 Access数据库简介,【新建】按钮,(2)在Access 2003主窗口中单击【新建】按钮,【任务窗格】会切换到【新建文件】任务窗格,如下左图所示。(3)在【新建文件】任务窗格中单击【空数据库】命令,打开【文件新建数据库】对话框,如下右图所示。,(4)在【文件新建数据库】对话框中,指定数据库文件的存储位置,并在文件名一栏中输入数据库文件的文件名,这里输入”学生选课系统”,然后单击【创建】按钮。这样Access 2003便在指定的位置创建了一个名为”学生选课系统”的空数据库文件。(5)数据库创建成功后,Access 2003会自动打开该数据库的【数据库】窗口,如下图所示。接下来就可以使用这个【数据库】窗口向该数据库中添加表、查询等数据库对象了。,7.2.3 新建和维护表,(1)新建表新建表的方法有很多种,最简单的方法是双击【使用设计器创建表】选项,就可以打开如下图所示的设计视图。,7.2 Access数据库简介,说明:上一页图中的一行对应一个字段,也就是表中的一列,依次输入字段的名称、字段的数据类型,字段的说明可以省略。字段的名称可以用中文,也可以用字母、数字和下划线,命名规则与变量类似。字段的数据类型有十种,如下表所示。当选中一个数据类型时,还可以在下方进行更复杂的设置,例如文本长度、数字类型、时间显示格式、默认值、必填字段、是否允许空字符串等。对于初学者,一般不必设置。设置主键的方法:在需要设置主键的字段上单击鼠标右键,在弹出的快捷菜单中选择【主键】命令。,(2)保存表 正确输入所有字段后,单击Access 2003主窗口中的【保存】按钮,就会弹出如下图所示的【另存为】对话框。在其中输入表的名称”学生表”,然后单击【确定】按钮。(3)在表中输入数据 成功新建一个表后,就会在如图7.5所示的主窗口中出现该表的名称,双击它就可以打开如下图所示的数据表视图,在其中就可以为该表输入数据了。,说明:对于日期型数据,输入时可以用 1989-12-1或12/1/1989 格式,输完后会自动显示为如上页图所示的格式。(4)修改数据表的结构 如果觉得数据表的结构设计的不够合理或者不合要求,可以在图7.5中选中该数据表,然后单击【设计(D)】按钮,就可以重新打开设计视图,进行必要的修改了。用同样的方法分别建立课程表和选课表。,7.2.4 新建和维护查询,查询是数据库系统应用中的一项非常重要的功能。简单地讲,一个查询就是对数据库中表或其它查询结果的一组相关操作,比如在一张表中筛选出符合某种条件的记录或把某两张表中的部分字段和记录组合在一起建立起来的一张新表,但这张新表不会被存储,它只不过是在执行查询操作时,即时生成的虚拟表。现在就来针对前面介绍的”学生表”建立一个简单查询,要求只显示姓名和班级两个字段的内容。(1)新建查询 在Access 2003主窗口的左侧选择【查询】按钮,就会显示如下图所示的对话框。,7.2 Access数据库简介,双击【在设计视图中创建查询】选项,就会打开如右图所示的【显示表】对话框。【显示表】对话框用来选择数据源,因为要从学生表中选择显示两个字段,所以这里选择学生表。选中后单击【添加】按钮,然后单击【关闭】按钮,就会出现如下图所示的查询窗口。,(2)显示查询内容 成功建立一个查询后,在主窗口中出现该查询的名称,双击该名称就可打开如下图所示的查询结果。(3)利用SQL语言建立查询 在上面建立简单查询时,不必自己添加表,直接单击【关闭】按钮,然后在主窗口依次选择【视图】|【SQL视图】菜单命令,就会出现如下图所示的SQL视图窗口。在图中所示的窗口中输入SQL语句”select 姓名,班级 from 学生表”,然后单击【保存】按钮即可,这里命名为”查询2”。单击【运行】按钮立即显示查询结果。,SQL是英文(Structured Query Language)的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。由于SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。目前,绝大多数流行的关系型数据库管理系统,如Oracle,IBM DB2,SQL Server,Access等都采用了SQL语言标准。在ASP中,无论何时要访问一个数据库,都要使用到SQL语言。因此,学习好SQL语言对ASP编程是非常重要的。但是,SQL语言又是一门比较复杂的语言,要想很好的掌握它,必须要参考专门的SQL语言书籍。,7.3 SQL语言简介,7.3.1 SQL语言的特点,用SQL语言编写的程序必须应用在数据库管理系统中,它本身并不能独立执行,而且其为”非过程性”(non-procedural)语言,与人们一般所熟悉的C、PASCAL和BASIC等程序设计语言相比,有很大不同。一般的程序语言要存取数据库时,必须先了解数据库的存放结构,而且每个存取动作都要写得清清楚楚,程序显得相当繁杂。但使用SQL语言,只要告诉数据库管理系统:”我现在需要这些数据,请将结果给我”,其余就全部交由数据库管理系统自行处理了。例如,要从学生表中找出所有的男生,用SQL语言来写,只要下面一行就可以了。Select*From 学生表Where 性别=男 这里,我们只需指出自己所要的数据、地点和条件,根本不必知道数据库是怎么找到或整理数据的。,7.3 SQL语言简介,7.3.2 常用SQL命令,在进行数据库操作时,无非就是查(查询)、增(增加)、删(删除)、改(修改)。SQL语言功能极强,但由于设计巧妙,语言十分简捷,完成以上核心功能只用了4个动词,如下表所示。,7.3 SQL语言简介,一Select语句 SQL语言的核心功能之一就是实现数据库的查询。可以使用Select语句获取满足特定条件的记录集,也就是说可以从数据库中查询有关记录。基本语法格式一:Select 字段名列表 From 数据表名 这是最常用的格式,这种格式的变化在于”字段名列表”参数,其规则如下:(1)凡是数据表里的字段都可以成为”字段名列表”的一员。(2)字段名称的顺序可以自定,不必与数据表里的字段名称顺序相同。(3)字段名称若含有空格时,需要以中括号括起来。(4)如果”字段名列表”涵盖数据表的所有字段,则可以用*代表所有字段,例如:Select*From 学生表(5)”字段名列表”除了有”字段名1,字段名2,”的写法外,还有以下写法:字段名1 As 别名1,字段名2 As 别名2,。意思是选取”字段名1,字段名2,”,但表头分别以”别名1、别名2、”来显示。例如,我们想选取”姓名”和”班级”两个字段,并且想把这两个字段的表头分别显示为”学生姓名”和”所在班级”,则Select语句需写成:Select 姓名 As 学生姓名,班级 As 所在班级 From 学生表,基本语法格式二:Select 字段名列表 From 数据表名 Where 查询条件 Where关键字是设置查询记录条件,用以取得所有符合设置条件内容的记录。在条件设置中可以使用、=等比较符号,而对于多项条件的判断也可以利用AND,OR等逻辑操作数来连接。例如,选取1990年1月1日之前出生的男生。Select*From 学生表 Where 出生#1/1/1990#and 性别=男 注意:使用日期型常量时一定要加上#号,使用字符串常量时一定要加上引号,并且所有标点符号都要在英文状态下输入。有时候查询条件可能不需要太精确,例如,要查询所有姓”李”的学生。就需要用到 Like 连接符。Select语句为:Select*From 学生表 Where 姓名 Like“李*”注意:这里的”*”和另外一个”?”称为Access SQL通配符,其中,”*”表示零到多个任意字符,而”?”则表示一个任意字符。与Access SQL通配符不同,ADO(ActiveX Data Object,ActiveX数据对象)SQL通配符分别是”%”和”_”(下划线),其中,”%”表示零到多个任意字符,而”_”则表示一个任意字符。,基本语法格式三:Select 字段名列表 From 数据表名 Where 查询条件 Order By字段名列表 当我们希望被选取的记录按照某一或某几个字段来排序时,只要把这些字段按顺序放在Order By关键字的后面,然后写在“Select 字段名列表 From 数据表名 Where 查询条件”后面即可,例如:Select*From 学生表 Where 性别=男 Order By 出生,学号结果如下图所示。,Order By默认的排序方式是Asc(升序),但如果需要某个字段按Desc(降序)排列,则只需在该字段的后面加上Desc关键字即可,例如:Select*From 学生表 Where 性别=男 Order By 出生 Desc,学号结果如下图所示。,二Insert语句 在数据库应用中,经常需要向数据库中插入数据,例如向学生表中增加新的学生时,就需要将新学生的数据插入到学生表中。此时,可以用SQL语言中的Insert语句来实现这个功能。语法格式:Insert Into 数据表名(字段名1,字段名2,)Values(字段1的值,字段2的值,)说明:(1)利用该语句可以给数据表中全部或部分字段赋值。Values括号中字段值的顺序必须与前面括号中的字段名一一对应。各个字段名之间、字段值之间用逗号隔开。,(2)若某字段值要用数据表的默认值时,则在该字段值处填写Default;如果想输入的字段值是空值(设计表时该字段被设定为不是”必填字段”)时,则在字段值处填写Null。(3)如果某个字段没有设定默认值,又是”必填字段”(既不允许Null值),而在Insert语句中又没给该字段赋值,系统就会报错。(4)如果某字段被设定为”主键”,则该字段必须被赋值。【例7.1】为学生表增加一条新纪录,只要求为”学号”、”姓名”、”性别”和”出生”字段赋值。Insert Into 学生表(学号,姓名,性别,出生)Values(0743101,李娜,女,#1991-3-13#),三Delete语句 在SQL语言中,可以使用Delete语句来删除表中无用的记录。语法格式:Delete From 数据表名 Where 删除条件 说明:(1)Where关键字的用法和Select语句中的用法一样,即凡是符合条件的记录都会被删除。如果没有符合条件的记录则不删除。(2)如果省略Where,将删除数据表中的全部记录,需格外小心。【例7.2】删除学生表中”李娜”同学的记录。Delete From 学生表 where 姓名=李娜,四Update语句 现实生活中,数据信息是在不断变化的,例如学生表中,某位同学因病休学一年后返校,其”班级”信息必然会发生改变。可以用Update语句来实现该生”班级”信息的改变。语法格式:Update 数据表名 Set 字段名1=字段新值1,字段名2=字段新值2,Where 更新条件 说明:(1)该语句可以用来更新数据表中的部分或全部记录。Where关键字用来指定更新的范围,其用法和Select语句中的用法一样,即凡是符合条件的记录都会被更新。如果没有符合条件的记录则不更新。(2)如果省略Where,将更新数据表中的全部记录,需格外小心。【例7.3】将学生表中”王五”同学的”班级”信息改为”通信081”。Update 学生表 Set 班级=通信081 Where 姓名=王五,7.3.3 聚合函数,在访问数据库时,经常需要对数据表中的某列数据进行统计分析,如求其最大值、最小值、平均值等。这些针对数据表中一列或者多列数据的分析称为聚合分析。在SQL语言中,可以使用聚合函数快速实现数据的聚合分析。常用的聚合函数有:求和函数SUM()、最大值函数MAX()、最小值函数MIN()、平均值函数AVG()和计数函数COUNT()等,如下表所示。通常这些聚合函数都是与SELECT语句搭配使用的。,7.3 SQL语言简介,1.求和函数SUM()求和函数SUM()用于对数据求和,返回查询结果集中所有值的总和。语法格式:Select SUM(字段名)From 数据表名 说明:SUM()函数只能作用于数值型数据,即求和字段名的数据类型必须是数值型。例如:对选课表中”成绩”字段求和的SQL语句如下:Select SUM(成绩)From 选课表 2.计数函数COUNT()COUNT()函数用来计算数据表中记录的个数或者字段中值的个数,计算内容由SELECT语句指定。语法格式:Select Count(*/字段名)From 数据表名 说明:计数函数有两种使用形式:(1)COUNT(*),计算表中行的总数,即使数据表中记录的数据为NULL,也被计入在内。(2)COUNT(字段名),计算数据表中指定字段包含记录的数量,如果某条记录中该字段的数据为NULL,则该条记录不计入统计总数。例如:执行下面这条SQL语句将返回学生表中男生的数目。Select Count(*)From 学生表 Where 性别=男,3.最大/最小值函数MAX()/MIN()当需要了解一个字段中的最大值时,可以使用MAX()函数;同样,当需要了解一个字段中的最小值时,可以使用MIN()函数。语法格式:Select MAX(字段名)/MIN(字段名)From 数据表名 说明:被操作字段的数据类型可以是数值型、文本型或日期/时间型。对文本型数据,是按照首字母由AZ的顺序排列,越往后,其值越大。对于汉字则是按照其全拼拼音排列的,若首字符相同,则比较下一个字符,以此类推。对于日期/时间型的数据其大小排列就是日期时间的早晚,越早认为其值越小。.例如,查询学生表中年龄最小学生的出生日期。SQL语句为:Select MAX(出生)From 学生表 4.均值函数AVG()函数AVG()用于计算一个字段中数据值的平均值。语法格式:Select AVG(字段名)From 数据表名 说明:AVG()函数的执行过程实际上是将一个字段中的值加起来,再将其和除以非NULL值的数目。所以,与SUM()函数一样,AVG()函数只能作用于数值型数据。,7.3.4 Select分组查询,Select分组查询与前面介绍的Select查询不同之处在于,它往往不仅是从数据库中查出某些记录,并且对查出的记录按照某些指定的字段值进行分类,并输出分类结果。同一分组中,相应的字段值相同或相似,而不同分组中相应的字段值不同。Select语句中的Group By子句提供了分组查询功能,其常常和前面讲的聚合函数配合使用。当Select语句的Group By子句与聚合函数连用时,系统先将查询结果进行分组,再将聚合函数分别作用于每一个分组,使每一个分组产生一个计算结果。下面是一个典型的示例。【例7.4】查询学生表中男、女学生的人数。Select 性别,COUNT(性别)As 人数 From 学生表 Group By 性别其查询结果如下图所示。,7.3 SQL语言简介,7.4.1 ODBC,早期的服务器数据库(如Oracle,DB2,SQL Server等)应用程序开发,存取服务器数据库信息的惟一途径就是使用服务器数据库厂商所提供的前端开发工具。开发不同厂商的服务器数据库应用,就得使用不同的前端开发工具。对于已经非常熟悉了某一种前端开发工具的开发者而言,其缺点是显而易见的。为了减轻开发者的负担,微软公司发布了ODBC(Open DataBase Connectivity,开放式数据库连接),希望为前端开发工具提供一套统一的程序接口,通过这个程序接口,便能方便的存取不同厂商所提供的服务器数据库(俗称“异构数据库”)。除此之外,利用ODBC接口也可以存取桌面数据库(如Access,VFP等),这表示用ODBC为桌面数据库开发的程序,将来数据库迁移为服务器数据库时,存取数据库的程序仍然可以使用。,7.4 微软数据库访问技术简介,7.4.2 DAO、RDO与ADO,使用ODBC来存取数据库虽然是一种很棒的方法,但ODBC的API却较难使用,因此便诞生了数据库存取对象。1DAO(Data Access Objects,数据访问对象)DAO是微软公司主要应用程序及开发工具访问数据库的标准对象。利用它来存取数据库的常见软件有Visual Basic、Visual C+、Excel和Word等。DAO除了可以用来存取ODBC数据库外,另一项重要的功能就是存取.mdb格式的数据库(Access)。2RDO(Remote Data Objects,远程数据访问对象)配合ODBC的使用,DAO已经具备了访问服务器数据库的基本能力,但是在窥视数据库市场这块大饼的情况下,微软又推出了RDO(其实就是RDAO,Remote Data Access Objects)。其主要特点是强化了SQL Server(微软自己的服务器数据库)的访问功能,并且提高了执行效率。,7.4 微软数据库访问技术简介,7.4.2 DAO、RDO与ADO,3ADO(ActiveX Data Objects,ActiveX数据对象)自从微软大举进入Internet领域后,Active就成为微软Internet产品中不可缺少的名词,例如OCX+Internet叫做ActiveX,Web Server Pages叫做Active Server Pages(ASP),自然而然,DAO就变成了ActiveX DAO,取三个字母为ADO。ADO不是什么全新的技术,它摘取了DAO及RDO的精华功能,成为一个小而精的,更适用于Internet的数据库存取对象群。,7.4 微软数据库访问技术简介,7.4.3 ADO工作原理简介,ADO(ActiveX Data Object,ActiveX数据对象)是一个ASP内置的ActiveX服务器组件(ActiveX Server Component),用于数据库访问。它可以让你与ASP结合起来,建立基于Web数据库的网页内容,完成对Web数据库信息的查询、插入、更新、删除等操作。Web数据库访问的一般过程如下图所示。,7.4 微软数据库访问技术简介,7.4.3 ADO工作原理简介,(1)首先,当浏览器向Web服务器(专指微软的IIS)发出下载文件的请求时,Web服务器会判断浏览器所要下载的文件是否为*.asp文件。(2)如果不是*.asp文件,则直接将该文件发送给浏览器。(3)如果是*.asp文件,则Web服务器会进一步判断该*.asp文件中是否含有Script代码(VB Script或Java Script)。如果有,则加以解释执行,并将执行结果连同非Script代码部分,直接发送给浏览器。(4)如果被执行的Script代码中使用了ADO对象,则Web服务器会根据ADO对象中的参数来启动对应的ODBC驱动程序,在启动了ODBC驱动程序后,Script代码便可直接利用ADO对象来访问数据库,或通过ADO对象来向数据库发送SQL语句,从而达到存取数据库信息的目的。,7.4 微软数据库访问技术简介,7.4.4 ADO组件,ADO主要是由Connection、Command、Parameter、RecordSet、Field、Property和Error等七个对象与Fields、Properties、Parameters和Errors等四个数据集合所组合而成,其功能概述如下:Connection对象:主要负责建立和关闭与后台数据库的连接。Command对象:主要负责执行SQL命令,访问后台数据库。Parameter对象和Parameters集合:负责为Command对象提供数据和SQL命令参数。RecordSet对象:主要负责存放访问数据库后,返回的数据信息。Field对象和Field集合:负责提供对RecordSet对象中当前记录的各个字段进行访问的功能。Property对象和Properties集合:负责记录有关属性信息,供Connection、Command、RecordSet和Field对象使用。Error对象和Errors集合:负责记录访问数据库时的错误信息。比较常用的是Connection、RecordSet、Field和Command对象。,7.4 微软数据库访问技术简介,7.4.5 使用ADO的一般方法,只需要3个步骤,就可以应用ADO技术,通过Web浏览器完成数据库资源的访问。第一步:数据库连接 如果要访问网站的数据库(以Access 2003为例),首先需要建立与该数据库的正确连接。基本上有两种方法。方法1:在数据库所在计算机的【ODBC数据源管理器】(如下左图所示)中单击【系统DSN】选项,然后单击【添加(D)】按钮,弹出如下右图所示的【创建新数据源】对话框。,7.4 微软数据库访问技术简介,7.4.5 使用ADO的一般方法,选中“Microsoft Access Driver(*.mdb)”选项后单击【完成】按钮,弹出【ODBC Microsoft Access 安装】对话框,如下左图所示。在”数据源名(N)”一栏为该数据源起个名称,这里填入“ODBC测试”。然后单击【选择(S)】按钮,弹出【选择数据库】对话框,如下右图所示。,7.4.5 使用ADO的一般方法,选中所需的Access 2003数据库文件,单击【确定】按钮,返回如下左图所示的【ODBC Microsoft Access 安装】对话框。单击【确定】按钮,返回如下右图所示的【ODBC数据源管理器】,单击【确定】按钮退出【ODBC数据源管理器】。至此,一个名为”ODBC测试”的数据源就建好了。,7.4.5 使用ADO的一般方法,接下来就可以使用”Server.CreateObject”和”Open”建立和管理ASP应用程序与ODBC数据库之间的连接了。程序如下:Set Conn=Server.CreateObject(“ADODB.Connection”)Conn.Open“数据源名称”数据源名称即为在上面【ODBC数据源管理器】中起的”ODBC测试”。范例如下:这种方法有时候用起来并不方便。譬如当网站数据库服务器不在身旁、或是向ISP租用的虚拟主机,这时候到建立一个ODBC数据源显然很困难。,7.4.5 使用ADO的一般方法,方法2:ASP提供了一种直接在程序代码中指定所要连接的数据库的方法。程序如下:Set Conn=Server.CreateObject(“ADODB.Connection”)Conn.Open“driver=Microsoft Access Driver(*.mdb);dbq=“dbq=“&DbPath%,7.4.5 使用ADO的一般方法,第二步:执行SQL语句 如果是查询,要将查询结果送给RecordSet对象:set rs=Conn.Execute(sql)rs是ADO的RecordSet对象的实例。将查询到的记录先存放到RecordSet中,就可以让使用者在程序中按照需要处理这些记录了。范例如下:,7.4.5 使用ADO的一般方法,第三步:显示查询结果范例如下:学生学号:学生姓名:学生性别:出生日期:所在班级:最后,使用如下语句,关闭数据库的连接:rs.CloseConn.Close,7.4.6 一个完整的ADO使用范例,以下为查询所有男生有关信息的ASP程序:ADO使用范例执行结果使用范例执行结果:所有男生,7.4 微软数据库访问技术简介,学号:姓名:性别:出生日期:,无论什么时候访问数据库,都必须先建立与数据库的连接。Connection对象的任务就是建立和管理这些连接。Connection 对象的创建与释放(1)创建Connection对象。语法格式:Set Connection对象名=Server.CreateObject(”ADODB.Connection”)功能:在内存中建立Connection对象实例。【例7.5】(2)释放Connection对象。语法格式:Set Connection对象名=Nothing功能:将Connection对象实例完全从内存中删除。【例7.6】,7.5 Connection对象,7.5.1 Connection对象的常用属性,Connection对象的常用属性如下表所示。,7.5 Connection对象,其中,ConnectionString通常称为连接字符串,由一系列的”参数=值”语句构成,各个语句用分号隔开。,7.5.1 Connection对象的常用属性,连接字符串有三种不同格式的描述方法:(1)ODBC驱动程序连接,7.5 Connection对象,7.5.1 Connection对象的常用属性,连接字符串有三种不同格式的描述方法:(2)ODBC数据源连接,7.5 Connection对象,7.5.1 Connection对象的常用属性,连接字符串有三种不同格式的描述方法:(3)OLEDB连接,7.5 Connection对象,7.5.2 Connection对象的方法,Connection对象的常用方法如下表所示。,7.5 Connection对象,7.5.2 Connection对象的方法,(1)打开数据库连接-Open 方法语法格式:Connection对象名.Open 连接字符串说明:如果已用Connection对象的ConnectionString属性设定了连接字符串,Open方法后的参数可省略。(2)执行SQL语句-Execute方法语法格式:Connection对象名.Execute SQL语句串,要查询的记录数说明:该方法可以执行SQL语句,并且可以返回一个 Recordset 对象。,7.5 Connection对象,【例7.7】建立一个为学生表增加新数据的输入页面。以下是”例7.7_1.asp”程序代码,执行结果如右下图所示。学生信息输入页面学号姓名性别男女出生日期班级,当在上页图所示的页面中填好数据,单击了【提交】按钮后,会看到直接执行了”例7.7_2.asp”文件,在浏览器的状态栏出现”完成”了字样。此时在Access 2003中打开”学生表”,可以看到刚才在页面中输入的数据已经进入数据表了。“例7.7_2.asp”的程序代码如下所示。,7.5.3 Connection对象的集合,数据库程序运行的时候,涉及ADO组件操作产生的错误,一个错误就是一个Error对象,所有的Error对象就组成了Errors集合,又称为错误集合。每一个Connection对象都包含了一个Errors数据集合,其中包含了该Connection对象或依赖于该Connection对象通道的Recordset、Command对象执行最后一次动作时,所产生的错误或警告信息。如下表所示,Errors集合拥有一个Count属性,利用该属性可以判断是否有错误发生。Errors集合Count属性的引用方法如下:,7.5 Connection对象,7.5.3 Connection对象的集合,Error对象是Connection对象的子对象。Errors对象通过一些属性来反应得到的错误信息。Error对象的属性如下表所示。,7.5 Connection对象,说明:Errors集合中的计数从0开始,如:Conn.Errors(0).Number表示Errors集合中第一个错误的编号。以下是这段代码可以用来显示关于ADO错误信息的提示:欢迎使用,0 then Response.Write“系统发生了”&“个错误!“Response.Write“Response.Write“Description属性“Response.Write“&Conn.Errors(i).Description&“Response.Write“Number属性“Response.Write“&Conn.Errors(i).Number&“Response.Write“Number属性“Response.Write“&Conn.Errors(i).Number&“Response.Write“Source属性“Response.Write“&Conn.Errors(i).Source&“Response.Write“属性“Response.Write“&Conn.Errors(i).NativeError&“next Response.Write“else Response.Write“系统没有错误发生!“end if Conn.Close set Conn=nothing%,