ADO数据访问接口培训教程_第1页
ADO数据访问接口培训教程_第2页
ADO数据访问接口培训教程_第3页
ADO数据访问接口培训教程_第4页
ADO数据访问接口培训教程_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 ADO数据访问接口6内容提要本章介绍ADO的基本概念,以及如何在ASP程序中使用ADO的对象。介绍ADO的对象Connection、RecordSet和Command的使用。介绍SQL语句的基本概念及如何利用SQL语句操作数据库。并介绍访问数据库的三个基本格式。ADO数据访问接口概述 ADO常用的四种对象及其功能如下。(1) 连接对象(Connection):用来连接数据库。(2) 记录集对象(RecordSet):用来保存查询语句返回的结果。(3) 命令对象(Command):用来执行SQL(Structured Query Language)语句或者SQL Server的存储过程。

2、(4) 参数对象(Parameter):用来为存储过程或查询提供参数。下面介绍常用的连接对象(Connection)、记录集对象(RecordSet)、命令对象(Command)。Connection数据对象 与数据库的所有通信都通过一个打开的Connection对象进行。对一个数据库进行数据的插入和读取之前,必须先打开数据库的连接数据库表是由行和列组成的一个二维表,当使用ADO打开数据库的时候,会有一个指针指向某一行记录,默认的情况下该指针指向数据库表的第一行。假定该指针叫“rs”,如果要访问数据库表的字段,可以用图6-1所示的方法。关系型数据库表与指针 其中:写法rs(0)、rs(“学号”

3、)、rs.Fields(0)和rs.Fields(“学号”)是相同的,写法rs(3)、rs(“语文”)、rs.Fields(3)和rs.Fields(“语文”)是相同的,其余类推。根据上表和注释:rs(4).Name 等价于 rs.Fields(4).Name 等价于 数学rs(1).Name等价于rs.Fields(1).Name等价于性别假设当前的指针指向第三行记录,那么rs(2).Value等价于rs(姓名)等价于rs(2) 等价于小张rs(4).Value等价于rs(4) 等价于rs(数学)等价于60打开和关闭数据库连接 要建立与一个数据库的连接,首先创建Connection对象的一个

4、实例,然后调用Connection对象的Open方法打开一个连接通过程序6-01.asp输出数据库的表头。 数据库调用的基本格式格式一:数据库调用的基本格式格式说明:利用Execute方法执行SQL语句第一步:建立Connection对象set conn = Server.CreateObject(ADODB.Connection)第二步:使用Connection对象的Open方法建立数据库连接conn.Open(driver=Microsoft Access Driver (*.mdb);dbq= &_Server.MapPath(person.mdb)第三步:使用Connection对象的

5、Execute方法执行SQL语句如果执行查询语句set rs = conn.Execute( 数据查询语句 )如果执行数据操纵语句conn.Execute( 数据操纵语句 )格式一的特点格式一的特点是:RecordSet对象的实例rs是利用Connection对象的Execute方法建立的,建立的rs对象的指针只能向后,不能向前移动。第一步建立了Connection对象的一个实例,第二步利用Open方法和用Access数据驱动程序打开服务器上的某个Access数据库,第三步执行SQL语句。 Connection对象 参数说明用法DsnODBC数据源的名称Dsn=ODBC名称User数据库登录的

6、用户名User=Database UserPassword数据库登录的密码Password =User PasswordDriver数据库驱动程序的类型Access用Access的驱动,其他数据数据库用其他驱动。Dbq数据库的物理路径Dbq = C:accdb.mdbProvider数据提供者Provider=Microsoft.Jet.OLEDB.4.0其他类型的数据库连接 连接的数据库说明OracleDriver=Microsoft ODBC for Oracle;Server=服务器地址;User=;Password=SQL ServerServer=服务器地址;Database=数据库

7、名;uid=用户名;pwd=ExcelDriver=Microsoft Excel Driver(*.xls);Dbq=Excel文件的物理路径文本文件Driver=Microsoft Text Driver(*.txt;*.csv);DefaultDir=文件的物理路径Connection对象的方法和属性 方法名称说明用法Open()建立连接Conn.Open(数据库连接串)Close()关闭与数据库连接Conn.Close()Execute()执行数据库查询Conn.Execute(SQL语句或者表名)BeginTrans()开始事务处理Conn.BeginTrans()CommitTra

8、ns()提交事务处理Conn.CommitTrans()RollbackTrans()取消事务处理Conn.RollbackTRans()Connection对象的属性 属性名称说明用法CommandTimeoutExecute方法最长执行时间默认值为30秒钟,可以修改ConnectionTimeoutOpen方法最长执行时间默认值为15秒,可以修改ConnectionString数据库的连接串可以将连接串赋值给该属性Mode用来设置操作权限1为只读、2为只写、3为可读可写Version获取ADO的版本信息Conn.Version向浏览器输出数据库内容 向浏览器输出了表头后,可以利用Recor

9、dSet记录集返回数据库表中的数据,如程序6-02.asp所示。 输出表中所有数据 用一个循环输出数据库中所有的数据。当数据库打开时,rs对象定位在数据库表的第一条记录上,输出第一条记录的内容;要想输出第二条记录,必须执行rs.MoveNext()指令,让它移动到下一条记录。rs.BOF(Begin Of File,文件开头)和rs.EOF(End Of File,文件结尾)这两条指令判断记录指针是否移动最前面和最后面,BOF的位置是在第一条记录之前,EOF是在最后一条记录之后。如果rs指针在最后一条记录上,再执行一次MoveNext()时则rs.EOF为真。如果rs.EOF或者rs.BOF为

10、真,这时读取数据会出错。 数据库表的结构 使用事务 事务在实际编程中使用比较频繁。事务典型的特征是:事务中一般包含几个事件,只有几个事件同时执行成功,整个事务才被执行,否则事务中的事件将不被执行。比如:在ATM机上取200元,需要执行两个操作,1、从银行账户上减去200;2、ATM机将钱返给用户。这两个事件将构成事务。在实际编程中,需要同时成功,同时失败。使用方法如程序6-05.asp所示。 Connection对象中的Errors集合 Error对象是Connection对象的子对象。数据库程序运行的时候,一个错误就是一个Error对象,所有的Error对象就组成了Errors集合,又称为错

11、误集合。可以利用Errors集合的Count属性来判断是否有错误发生,还可以提取出错误的描述,最后根据错误的类型,给出相应的解决措施。Errors对象提供一些属性来得到错误信息 Error对象的属性 参数说明用法Number错误编号Err.NumberDescription错误描述Err.DescriptionSource发生错误的原因Err.SourceHelpContext错误的提示文字Err.HelpContextHelpFile错误的提示文件Err.HelpFileNativeError数据库服务器产生的错误Err.NativeErrorRecordSet数据对象 记录集可以用来代替表

12、中的记录。一个记录集包含一条或多条记录(行),每条记录包括一个或多个域(字段)。在任何时刻,只有一条记录是当前记录。创建记录集对象的一个实例,可以使用Connection对象的Execute()方法,用Execute()创建的记录集指针只能向下,而不能向上移动,即不能执行MoveFirst()和MovePrevious()指令。 RecordSet对象的属性及方法 利用RecordSet对象的属性和方法可以完全操作一个数据库,理论上只要SQL语句可以完成的操作利用RecordSet对象都可以实现。RecordSet对象的属性和方法很多,常用的方法如表6-6所示。 RecordSet对象的方法

13、方法说明用法Open()打开记录集rs.Open()Close()关闭记录集rs.Close()Requery重新打开记录集rs.Requery()Move()当前记录前后移动条数rs.Move(4) 向后面移动4行MoveFirst()移动到第一条记录rs.MoveFirst() MoveNext()移动到下一条记录rs.MoveNext()MovePrevious()移动到记录集中的上一条记录rs. MovePrevious()MoveLast()移动到记录集的最后一条记录rs. MoveLast()AddNew()向记录集中添加一条新记录rs.AddNew()Delete()从记录集中删

14、除当前记录rs. Delete()Update()保存对当前记录所做的修改rs. Update()UpdateBatch()保存对一个或多个记录的修改rs. UpdateBatch()CancelBatch()取消一批更新rs. CancelBatch()RecordSet对象的属性 属性说明用法ActiveConnection当前记录集用的数据连接rs. ActiveConnection = connRecordCounts记录集的总数rs.RecordCountsBOF记录集的开头rs.BOFEOF记录集的结尾rs.EOFPageCount返回记录集中的逻辑页数rs.PageCountPa

15、geSize返回逻辑页中的记录个数rs.PageSize 默认值是10AbsolutePage指定当前的页rs.AbsolutePageAbsolutePosition指定当前的记录rs.AbsolutePosition使用RecordSet对象打开数据库 格式二:数据库调用的基本格式格式说明:利用RecordSet对象打开数据库表第一步:建立Connection对象set conn = Server.CreateObject(ADODB.Connection)第二步:使用Connection对象的Open方法建立数据库链接conn.Open(driver=Microsoft Access D

16、river (*.mdb);dbq= &_Server.MapPath(Access数据库)第三步:建立RecordSet对象set rs = Server.CreateObject(ADODB.Recordset)第四步:利用RecordSet对象的Open方法打开数据库rs.Open SQL语句, conn, 打开方式, 锁定类型 打开类型的四个参数: (1)adOpenFowardOnly:对应的数字是0(默认值),记录集只能向前移动。这些参数对应的数字,都保存在系统文件Adovbs.inc中。(2)adOpenKeyset:对应的数字是1,记录集可以向前或向后移动。如果另一个用户删除或

17、改变一条记录,记录集中将反映这个变化。但是,如果另一个用户添加一条新记录,新记录不会出现在记录集中。(3)adOpenDynamic:对应的数字是2,使用动态游标,可以在记录集中向前或向后移动。其他用户造成的记录的任何变化都将在记录集中有所反映。(4)adOpenStatic。对应的数字是3,使用静态游标,可以在记录集中向前或向后移动。但是,静态游标不会对其他用户造成的记录变化有所反映。锁定类型的参数如下 (1)adLockReadOnly:只读锁定,对应的数字是1(默认值),不能修改记录集中的记录。(2)adLockPessimistic:悲观锁定,对应的数字是2,指定在编辑一个记录时,立即

18、锁定它。进入锁定rs(数学) = rs(数学) + 100rs(语文) = rs(语文) + 100 rs.Update() 解除锁定锁定类型的参数 (3)adLockOptimistic:乐观锁定,对应的数字是3,指定只有调用记录集的Update方法时,才锁定记录。rs(数学) = rs(数学) + 100rs(语文) = rs(语文) + 100进入锁定 rs.Update() 解除锁定(4)adLockBatchOptimistic:批次乐观锁定,对应的数字是4,指定记录只能成批地更新。 For I = 1 to 10rs (语文)= rs (语文) + 100rs (数学) = rs

19、(数学) + 100 rs.MoveNext() Next进入锁定 rs.UpdateBatch() 解除锁定RecordSet当数据库第一次打开时,RecordSet指针定位在第一条记录上,可以利用AbsolutePosition直接定位到某条记录上,基本的语法是:AbsolutePosition=N,如程序6-07.asp文件所示。 AbsolutePage还有一个属性是AbsolutePage,当调用AbsolutePage时,系统将对数据记录进行分页,默认每页为10条记录,AbsolutePage为几,记录指针就自动定位到第几页的第一条记录上。比如说,AbsolutePage = 3,

20、则记录指针就自动定位到第21条记录上去了,此时AbsolutePosition = 21。计算公式为:AbsolutePosition = (Absolute1)*PageSize,PageSize默认是10,也可以设置为其他的值。使用方法如程序6-08.asp所示 实现数据库的分页显示 数据库中可能有成千上万条记录,如果一次都显示出来的话消耗的时间太多。下面通过一个案例分成六个版本实现数据库的分页显示。 案例6-1 分页显示首先利用格式二将数据库表中某页的所有记录输出,如程序pageV1.asp所示。在程序中加上翻页的超级链接就可以实现翻页,如程序pageV2.asp所示。可以利用PageC

21、ount属性得到总页数,修正这些可能出现的错误,得到版本三。如程序pageV3.asp所示。加入超级链接的版本四如程序pageV4.asp所示,将姓名一列加上超级链接。 偶数行和奇数行可显示不同的背景颜色。版本五将实现这些功能,如程序pageV5.asp所示。 Command数据对象 Command对象又称为命令对象,可以执行SQL语句和执行SQL Server的存储过程。通过传递SQL指令对数据库提出操作要求,把得到的结果返回给RecordSet对象。Command对象的属性和方法 属性说明用法ActiveConnection指定Command用的连接cmd. ActiveConnectio

22、n = connCommandText指定数据库查询信息cmd. ActiveConnection =表名或SQLCommandType数据查询的类型cmd. CommandType =1, 2,4CommandTimeout执行SQL语句的最长时间默认为30秒Prepared是否预编译,可以加快速度cmd.Parpared True/ FalseCommand对象提供的方法 方法说明用法Execute()执行SQL语句、表名或者存储过程cmd.Execute()CreateParameter()创建Command对象的参数cmd.CreateParameter()格式三格式三:数据库调用的基

23、本格式格式说明:利用Command对象的Execute方法建立RecordSet对象第一步:建立Connection对象set conn = Server.CreateObject(ADODB.Connection)第二步:使用Connection对象的Open方法建立数据库连接conn.Open(driver=Microsoft Access Driver (*.mdb);dbq= +Server.MapPath(Access数据库)第三步:建立Command对象cmd = Server.CreateObject(ADODB.Command)cmd.ActiveConnection = conncmd.CommandText = sql第四步:使用Command对象的Execute方法执行SQL语句如果执行查询语句rs = cmd.Execute()如果执行数据操纵语句cmd.Execute()使用Command对象使用Command对象来执行SQL 语句,如程序6-09.asp所示。 例6-2 分页列表的删除和修改 本案例实现的功能是:为案例6-1的分页列表添加修改数据和删除数据的功能。首先为列表添加两列:修改和删除。显示的主页面如图6-16所示。案例6-3 分页版本的留言簿这里再对留言簿作一次升级,在案例5-2的基础上加入分页功能。只要更改display.asp文件就可

温馨提示

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

评论

0/150

提交评论