第7章ADO数据访问接口.doc
《第7章ADO数据访问接口.doc》由会员分享,可在线阅读,更多相关《第7章ADO数据访问接口.doc(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三部分 ASP操作数据库第7章 ADO数据访问接口本章要点本章介绍ADO的基本概念,以及如何在ASP程序中使用ADO的对象。介绍ADO的对象Connection,RecordSet和Command的使用。介绍SQL语句的基本概念及如何利用SQL语句操作数据库。介绍访问数据库的三个基本格式。7.1 ADO概述使用ADO(ActiveX Data Object,ActiveX数据对象),可以对几乎所有数据库进行读取和写入操作。可以使用ADO来访问Microsoft Access,Microsoft SQL Server和Oracle等数据库。ADO常用的四种对象及其功能如下。(1)连接对象(Co
2、nnection):用来连接数据库。(2)记录集对象(RecordSet):用来保存查询语句返回的结果。(3)命令对象(Command):用来执行SQL(Structured Query Language)语句或者SQL Server的存储过程。(4)参数对象(Parameter)。用来为存储过程或查询提供参数。下面介绍常用的连接对象(Connection)、记录集对象(RecordSet)、命令对象(Command)。7.2 Connection数据对象与数据库的所有通信都通过一个打开的Connection对象进行。对一个数据库进行数据的插入和读取之前,必须先打开与这个数据库的连接。如何打开
3、和关闭一个数据库连接?首先创建一个Access数据库表,打开Access2000/XP,选择“新建数据库”,数据库命名为:“person.mdb”,出现如图7-1所示界面。单击“使用设计器创建表”出现输入界面,在其中输入表的结构,如图7-2所示。输入完以上的信息后,单击保存图标,并命名为“grade”,右击刚创建的“grade”表,选择“打开”,将产生一个空表,如图7-3所示。在出现的界面中输入人员的信息,如图7-4所示。图7-1 新建数据库表图7-2 输入数据字段名图7-3 产生一个空表图7-4 输入数据库表的内容输入完毕后,保存关闭窗口,表命名为“grade”。下面对其结构进行简要的分析。
4、假定建立了一个RecordSet对象的实例rs,rs的内部结构和数据库表一样具有二维结构。rs对象包含一个无形的指针,默认的情况下指向第一行,结构如图7-5所示。图7-5 关系型数据库表与RecordSet对象其中:写法rs(0)、rs(“学号”)、rs.Fields(0)和rs.Fields(“学号”)是相同的,写法rs(2)、rs(“语文”)、rs.Fields(2)和rs.Fields(“语文”)是相同的。其余类推。根据上表和注释:rs(3).Name = rs.Fields(3).Name = 数学;rs(4).Name=英语;假设当前的记录指向第三条,那么rs(1).Value=rs
5、(姓名)=rs(1)= 张敏rs(4).Value=rs(4)=rs(英语)=200有了这些基础,就可以进行数据库操作。7.2.1 打开和关闭数据库连接要建立与一个数据库的连接,首先创建Connection对象的一个实例,然后调用Connection对象的Open方法打开一个连接,首先通过程序7-01.asp输出数据库的表头。案例名称:输出数据库的表头程序名称:7-01.asp%var conn = Server.CreateObject(ADODB.Connection);conn.Open(driver=Microsoft Access Driver (*.mdb);dbq= +Serve
6、r.MapPath(person.mdb);rs = conn.Execute( select * from grade );for (i=0; irs.Fields.Count; i+)Response.Write ( + rs(i).Name);conn.close();%显示的结果如图7-6所示。图7-6 输出数据表的表头在解释程序之前,首先介绍一个通用的打开数据库的格式。格式一:数据库调用的基本格式格式说明:利用Execute方法建立RecordSet对象/第一步:建立Connection对象var conn = Server.CreateObject(ADODB.Connection
7、);/第二步:使用Connection对象的Open方法建立数据库连接conn.Open(driver=Microsoft Access Driver (*.mdb);dbq= +Server.MapPath(Access数据库);/第三步:使用Connection对象的Execute方法执行SQL语句/如果执行查询语句rs = conn.Execute( 数据查询语句 );/如果执行数据操纵语句conn.Execute( 数据操纵语句 );本章总共将介绍连接数据库的三大基本格式。格式一的特点是:RecordSet对象是利用Connection对象的Execute方法建立的,建立的rs对象的指
8、针只能向后,不能向前移动。第一步建立了Connection对象的一个实例,第二步利用Open方法和用Access数据驱动程序打开服务器上的某个Access数据库,第三步执行SQL语句。程序7-01.asp中利用conn的Open方法打开当前目录下的person.mdb文件,然后执行一个SQL语句“Select * from grade”,其中*表示所有列,grade是数据库表名。“rs.Fields.Count”返回数据库表的列数。7.2.2 向浏览器输出数据库内容已经成功地向浏览器输出了表头后,再输出内容就比较容易,如程序7-02.asp所示。 案例名称:输出第一条记录程序名称:7-02.a
9、sp%var conn = Server.CreateObject(ADODB.Connection);conn.Open(driver=Microsoft Access Driver (*.mdb);dbq= +Server.MapPath(person.mdb);rs = conn.Execute( select * from grade );for (i=0; irs.Fields.Count; i+)Response.Write ( + rs(i).Name + = + rs(i);conn.close();%显示的内容如图7-7所示。到此必须建立一个概念:RecordSet对象有一个
10、无形的指针。关系型数据库表是一张二维表,每一行代表一个实体的信息。RecordSet指针可以指向不同的行,当数据库第一次打开时,这个指针定位在第一行,当需要向后移动的时候,可以用movenext()来移动这个指针。这时已经实现向浏览器输出数据库表的第一条内容。图7-7 输出第一行7.2.3 以表格的形式输出下面用一个循环输出数据库中所有的数据,遇到一个陌生的语法是:rs.movenext()。当数据库打开时,rs对象定位在数据库表的第一条记录上,输出第一条记录的内容;要想输出第二条记录,必须执行rs.movenext()指令,让它移动到下一条记录。其次还要介绍的语法是:rs.Bof(Begin
11、 of File:文件开头)和rs.Eof (end of File:文件结尾),这两条指令判断记录指针是否移动最前面和最后面,理解它的一个关键的地方是:Bof的位置是在第一条记录之前,Eof是在最后一条记录之后。如果rs指针在最后一条记录上,再执行一次movenext时,rs.Eof为真。一般不能让rs.Eof或者rs.Bof为真,因为这时,读取数据会出错。案例名称:以表格的形式输出程序名称:7-03.asp%var conn = Server.CreateObject(ADODB.Connection);conn.Open(driver=Microsoft Access Driver (*
12、.mdb);dbq= +Server.MapPath(person.mdb);rs = conn.Execute( Select * from grade );Response.write ();Response.write ();/输出表头for (i=0; irs.Fields.Count; i+)Response.Write ( + rs(i).Name + );Response.write ();/输出表内容while (!rs.Eof)Response.write ();for (i=0; irs.Fields.Count; i+)Response.Write ( + rs(i) +
13、 );Response.write ();rs.movenext();Response.write ();conn.close();%执行上面的程序,程序以表格的形式输出到浏览器上,程序实现一个循环将所有的数据都显示出来,每次循环让RecordSet对象向下移动一次,直到移动到最后一条记录为止,所以显示出来的是全部数据,而且以表格的形式输出到浏览器上,如图7-8所示。图7-8 表格输出可以将输出的程序写成一个子过程的形式,便于以后的调用。案例名称:编写输出函数程序名称:7-04.asp%function rstotab(rs)Response.write ();Response.write (
14、);/输出表头for (i=0; irs.Fields.Count; i+)Response.Write ( + rs(i).Name + );Response.write ();/输出表内容while (!rs.Eof)Response.write ();for (i=0; irs.Fields.Count; i+)Response.Write ( + rs(i) + );Response.write ();rs.movenext();Response.write ();%显示的结果依然将所有记录输出来。当要向浏览器输出信息时,只要包含这个函数然后调用函数就可以了,可以提高编程效率。7.3
15、使用SQL语句SQL语句主要包括数据查询语言(Data Query Language,DQL)和数据操作语言(Data Manipulation Language,DML)。首先介绍DQL的使用方法。7.3.1 Select的三大基本格式1. 基本句型一:(最简单的select语句)Select 字段名 From 数据表测试句型如下。(1)Select * From grade功能说明:将grade表中的所有字段取出来。(2)Select 学号,姓名 from grade功能说明:将grade表中学号和姓名字段取出来。(3)Select 学号,姓名,语文+数学+英语 as 总成绩 from g
16、rade功能说明:将grade表中的学号和姓名取出来,并将语文、数学和英语成绩相加产生虚拟列总成绩。2. 基本句型二:(使用条件查询)Select 字段名 From 数据表 where 筛选条件测试句型如下。(1)Select * from grade where 数学60功能说明:把所有数学成绩大于60分的记录选出来。(2)Select * from grade where 数学=300 or 语文=300功能说明:把数学成绩等于300分或者语文成绩等于300分的人选出来。3. 基本句型三:(进行排序)Select 字段名 From 数据表 Order by 字段名测试句型如下。(1)Sel
17、ect * from grade order by 数学 注:从低到高排序功能说明:从grade表中取出所有字段,并按数学成绩排序。(2)Select * from grade order by 数学,语文功能说明:从grade表中取出所有字段,并按数学成绩排序,如果数学成绩相同则按照语文成绩排序。(3)Select * from grade order by 数学 desc 注:从高到低排序功能说明:从grade表中取出所有字段,并按数学成绩倒序。(4)Select top 5 * from 成绩单功能说明:从grade表中取出前五条记录的所有字段。测试上面的SQL语句,如程序7-05.as
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 ADO数据访问接口 ADO 数据 访问 接口
限制150内