ASP数据库访问技术(二)
l Recordset对象
虽然使用Execute方法已经可以实现对数据库的各种操作,但是在编程中我们更常用的还是RecordSet对象,ADO中的内建对象 RecordSets是数据库访问的主要接口,它指向数据表中的一个记录集,它有点类似于C语言中指针的概念,在任何时刻一个RecordSets对象只能指向一条记录。
Recordset对象提供了许多方法和属性来方便对数据库的操作,下面是一些常用的Recordset方法及属性。
*CursorType应该在Recordset对象打开之前设置这个属性,它决定了Recordset的游标类型,CursorType可以为以下值:
常量值含义
adOpenStatic 3静态游标,它是所访问的记录集的拷贝,看不到其它用户对数据库的修改
AdOpenDynamic 2动态游标,可以看到其它用户对数据库的添加、删除和修改等操作,允许游标向前或向后移动
adOpenKeyset 1关键字游标,与动态游标相同,但是只能看到其它用户对数据库的更新,看不到添加和删除结果
adOpenForwardOnly 0向前游标,同静态游标相同,但是游标只能向前移动
*BOF Recordset属性,在当前Recordset对象指向记录集中的第一条记录之前时BOF返回值为True(-1),反之为False(0)。
*EOF Recordset属性,当当前Recordset对象指向记录集中的最后一条记录之后BOF返回值为True(-1),反之为False(0)。
*RecordCount Recordset属性,RecordCount返回值为一个long型值,等于记录集中记录的数量。
*Open在使用Recordset对象之前首先要用Open方法打开一个指向记录集合的游标,其语法如下:recordset.Open Source, ActiveConnection, CursorType, LockType, Options
recordset Recordset对象变量
Source可选参数,用于选取记录集,可以是SQL语句、表名或存储过程
ActiveConnection可选参数,一个变量代表一个打开的Connection对象
CursorType可选参数,指定游标类型,默认值为“0”
LockType可选参数,指定编辑记录集时的锁的类型如下:
常量值含义
AdLockReadOnly 1只读,不可修改记录集
AdLockPessimistic 2当编辑记录集时锁定数据库,禁止其它用户访问
AdLockOptimistic 3只有使用Update方法时才锁定数据库
AdLockBatchOptimistic 4只有使用UpdateBatch方法时才锁定数据库
Option可选参数,同Connection的Open方法中的Option参数。
注意:在使用Recordset对象时可以不建立Connection对象,而是在Open方法中直接传递连接参数,事实上这种情况下ADO还是创建了一个Connection对象,只是并不把它指派给对象变量。但是如果要用一个Connection对象建立多个Recordset对象,就必须建立对象并把它指派给一个Connection对象变量。
*AddNew新建并初始化一个新记录,并将RecordSet游标指向该记录。
*Delete删除游标指向的当前记录。
*Update保存对当前记录集所作的任何修改。
*MovePrevious Recordset方法,使Recordset对象指向上一条记录。
*MoveNext Recordset方法,使Recordset对象指向下一条记录。
*MoveFirst Recordset方法,使Recordset对象指向第一条记录。
*MoveLast Recordset方法,使Recordset对象指向最后一条记录。
*Close Recordset方法,关闭当前的Recordset对象以释放占用的系统资源。
*用Recordset变量(“字段名")的形式来引用数据库中的数据。
l Field对象
每个Recordset对象中都有一个由Field对象组成的Fields集合,其中每个Field对象都代表Recordset中的一个字段,在*.asp文件中可以用以下形式引用这些字段的值:
recordset.Fields.Item(0) recordset.Fields.Item(“name”)
recordset.Fields(0) recordset.Fields(“name”)
recordset(0) recordset(“name”)
recordset![name]
其中recordset代表一个recordset对象,“name”为数据表中的字段名,“0”表示一个整数,一个recordset中的 Field对象都有一个序号,在引用这个字段时可以用这个序号代替这个字段的字段名,这就允许我们在一个循环中使用一个整型变量来依次引用每一个字段的值,而不必写出每个字段的字段名,这样就增加了应用程序的通用性。