SQL语句及Recordset记录集对象详解

 

1. ASPAccess数据库连接:
<%@ language=VBscript%>
<%
dim conn,mdbfile
mdbfile=server.mappath("
数据库名称.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver 
(*.mdb)};uid=admin;pwd=
数据库密码;dbq="&mdbfile
%>
2. ASP
SQL数据库连接:
<%@ language=VBscript%>
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA 
SOURCE=SQL
服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称
%>

建立记录集对象:

set rs=server.createobject("adodb.recordset")
rs.open SQL
语句,conn,3,2

3. SQL
常用命令使用方法:
(1) 
数据记录筛选:
sql="select * from 
数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 
数据表 where 字段名 like ’%字段值%’ order by 字段名 [desc]"
sql="select top 10 * from 
数据表 where 字段名 order by 字段名 [desc]"
sql="select * from 
数据表 where 字段名 in (’1’,’2’,’3’)"
sql="select * from 
数据表 where 字段名 between 1 and 2"

(2) 
更新数据记录:
sql="update 
数据表 set 字段名=字段值 where 条件表达式"
sql="update 
数据表 set 字段1=1,字段2=2 …… 字段n=n where 条件表达式"

(3) 
删除数据记录:
sql="delete from 
数据表 where 条件表达式"
sql="delete from 
数据表" (将数据表所有记录删除)

(4) 
添加数据记录:
sql="insert into 
数据表 (字段1,字段2,字段3 …) values (1,2,3 …)"
sql="insert into 
目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)

(5) 
数据记录统计函数:
AVG(
字段名得出一个表格栏平均值
COUNT(*¦
字段名对数据行数的统计或对某一栏有值的数据行数统计
MAX(
字段名取得一个表格栏最大的值
MIN(
字段名取得一个表格栏最小的值
SUM(
字段名把数据栏的值相加
引用以上函数的方法:
sql="select sum(
字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
 rs("别名") 获取统的计值,其它函数运用同上。

(5) 
数据表的建立和删除:
CREATE TABLE 
数据表名称(字段类型1(长度),字段类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 
数据表名称 (永久性删除一个数据表)
4. 
记录集对象的方法:
rs.movenext 
将记录指针从当前的位置向下移一行
rs.moveprevious 
将记录指针从当前的位置向上移一行
rs.movefirst 
将记录指针移到数据表第一行
rs.movelast 
将记录指针移到数据表最后一行
rs.absoluteposition=N 
将记录指针移到数据表第N
rs.absolutepage=N 
将记录指针移到第N页的第一行
rs.pagesize=N 
设置每页为N条记录
rs.pagecount 
根据 pagesize 的设置返回总页数
rs.recordcount 
返回记录总数
rs.bof 
返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 
返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 
删除当前记录,但记录指针不会向下移动
rs.addnew 
添加记录到数据表末端
rs.update 
更新数据表记录
--------------------------------------------------------------
Recordset
对象方法
Open
方法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset
对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored 
Procedure
。假如省略这个参数,系统则采用Recordset对象的Source属性。

ActiveConnection
Recordset
对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。

  ADO   中定义了四种不同的游标类型:    
 
动态游标   —   用于查看其他用户所作的添加、更改和删除,并用于不依赖书签的   Recordset   中各种类型的移动。如果提供者支持,可使用书签。  
 
键集游标   —   其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许   Recordset   中各种类型的移动。  
 
静态游标   —   提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许   Recordset   中各种类型的移动。其他用户所作的添加、更改或删除将不可见。这是打开客户端   (ADOR)   Recordset   对象时唯一允许使用的游标类型。  
 
仅向前游标   —   除仅允许在记录中向前滚动之外,其行为类似动态游标。这样,当需要在   Recordset   中单程移动时就可提高性能。
CursorType

指示在   Recordset   对象中使用的游标类型。设置或返回以下某个   CursorTypeEnum   值。 
Recordset
对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnlyadOpenKeysetadOpenDynamicadOpenStatic,分述如下:
--------------------------------------------------------------
常数 常数值 说明
--------------------------------------------------------------
adOpenForwardOnly 0 
缺省值,启动一个只能向前移动的游标(Forward Only)。

仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。
adOpenKeyset 1 
启动一个Keyset类型的游标。

键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。
adOpenDynamic 2 
启动一个Dynamic类型的游标。

动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。
adOpenStatic 3 
启动一个Static类型的游标。

静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。  
--------------------------------------------------------------
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。
--------------------------------------------------------------
Recordset
属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
--------------------------------------------------------------
AbsolutePage 
不支持 不支持 可读写 可读写
AbsolutePosition 
不支持 不支持 可读写 可读写
ActiveConnection 
可读写 可读写 可读写 可读写
BOF 
只读 只读 只读 只读
Bookmark 
不支持 不支持 可读写 可读写
CacheSize 
可读写 可读写 可读写 可读写
CursorLocation 
可读写 可读写 可读写 可读写
CursorType 
可读写 可读写 可读写 可读写
EditMode 
只读 只读 只读 
只读
EOF 
只读 只读 只读 
只读
Filter 
可读写 可读写 可读写 可读写
LockType 
可读写 可读写 可读写 可读写
MarshalOptions 
可读写 可读写 可读写 可读写
MaxRecords 
可读写 可读写 可读写 可读写
PageCount 
不支持 不支持 只读 只读
PageSize 
可读写 可读写 可读写 可读写
RecordCount 
不支持 不支持 只读 只读
Source 
可读写 可读写 可读写 可读写
State 
只读 只读 只读 只读
Status 
只读 只读 只读 只读
AddNew 
支持 支持 支持 支持
CancelBatch 
支持 支持 支持 支持
CancelUpdate 
支持 支持 支持 支持
Clone 
不支持 不支持
Close 
支持 支持 支持 支持
Delete 
支持 支持 支持 支持
GetRows 
支持 支持 支持 支持
Move 
不支持 支持 支持 支持
MoveFirst 
支持 支持 支持 支持
MoveLast 
不支持 支持 支持 支持
MoveNext 
支持 支持 支持 支持
MovePrevious 
不支持 支持 支持 支持
NextRecordset 
支持 支持 支持 支持
Open 
支持 支持 支持 支持
Requery 
支持 支持 支持 支持
Resync 
不支持 不支持 支持 支持
Supports 
支持 支持 支持 支持
Update 
支持 支持 支持 支持
UpdateBatch 
支持 支持 支持 支持
--------------------------------------------------------------
其中NextRecordset方法并不适用于Microsoft Access数据库。
说明  
   
 
使用   CursorType   属性可指定打开   Recordset   对象时应该使用的游标类型。Recordset   关闭时   CursorType   属性为读/写,而   Recordset   打开时该属性为只读。  
   
 
如果将   CursorLocation   属性设置为   adUseClient   则只支持   adUseStatic   的设置。如果设置了不支持的值,不会导致错误,将使用最接近支持的   CursorType  
   
 
如果提供者不支持所请求的游标类型,提供者可能会返回其他游标类型。打开   Recordset   对象时,将更改   CursorType   属性使之与实际使用的游标匹配。要验证返回游标的指定功能,请使用   Supports   方法。关闭   Recordset   后,CursorType   属性将恢复为最初的设置。  
   
 
下表说明每个游标类型所需的提供者功能(由   Supports   方法常量标识)。    
   
 
对于该   CursorType   的某Recordset     对于所有这些常量,   Supports   方法必须返回   True    
  AdOpenForwardOnly  
   
  AdOpenKeyset   AdBookmark
adHoldRecordsadMovePreviousadResync    
  AdOpenDynamic   adMovePrevious    
  AdOpenStatic   adBookmark,   adHoldRecords,   adMovePrevious,   adResync    
   
   
 
注意       尽管对于动态游标和仅向前游标   Supports(adUpdateBatch)   可能是真,但对于批处理更新应使用键集游标或静态游标。请将   LockType   属性设置为   adLockBatchOptimistic,然后将   CursorLocation   属性设置为   adUseClient   以启用批更新需要的   OLE   DB   游标服务。  
   
 
远程数据服务用法       当用于客户端   (ADOR)   Recordset   对象时,只能将   CursorType   属性设置为   adOpenStatic 

 


LockType
Recordset
对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnlyadLockPrssimisticadLockOptimisticadLockBatchOptimistic等,分述如下:
-------------------------------------------------------------
常数 常数值 说明
--------------------------------------------------------------
adLockReadOnly 1 
缺省值,Recordset对象以只读方式启动,无法运行AddNewUpdateDelete等方法
adLockPrssimistic 2 
当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。
adLockOptimistic 3 
当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。
adLockBatchOptimistic 4 
当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、删、改的操作。

posted on 2009-08-18 17:47  小芹菜  阅读(2703)  评论(0编辑  收藏  举报

导航