- ·上一篇文章:网站推广新法:利用免费blog服务
- ·下一篇文章:优化网页代码提高网页访问速度
本人写的ADO使用指南
ADO
(vbscript描述)
****************************************************************************************************
Connection对象
1.设置连接
Dim Str
1)系统DSN连接ACCESS
Str="DSN=MyDsn"
2)文件DSN连接ACCESS
Str="FileDsn='c:...*.dsn'"
3)DSN-LESS连接ACCESS
Str="Driver={Microsoft Access Driver (*.mdb)};DBQ=path"
4)OLEDB连接ACCESS
Str="provider=Microsoft.Jet.OLEDB.4.0;Data Source=path"
5)系统DSN连接SQL SERVER
Str="Dsn=MyDsn;User ID=sa;password=;"
6)文件DSN连接SQL SERVER
Str="FileDSN=c:...*.dsn;User ID=sa;password=;"
7)DSN-LESS连接SQL SERVER
Str="Driver={SQL Server};server=(local);User ID=sa;password=;Database=DBName"
8)OLEDB连接SQL SERVER
Str="Provider=SqlOleDb;User ID=sa;password=;Initial Catalog=DBName;DataSource=ISVR"
连接字符串里一般包含,数据供应程序(数据库软件),数据库位置(SQL SERVER只要指定数据库名即可)
用户名,密码
2.打开连接的方式
oConn.open([Str],[userid],[pswd])
1)Dim Str
Set oConn=Server.CreateObject("ADODB.Connection")
oConn.ConnectionString=Str
oConn.Open [,userid,pswd]
2)Dim Str
Set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open Str [,userid,pswd]
在打开SQL数据库时,连接字符串不包含用户名与密码信息时userid,pswd就必须作为参数传入函数
3.执行查询
oConn.Execute str
oConn.Execute (str,[Num],[option])
Set oRs=oConn.Execute (str,[Num],[option])
option包含命令类型(Command Type)和执行类型(Execute Type)两种
str="insert into userinfo (uname,pswd) values('ybb','123')"
oConn.Execute (str,,AdCmdText)
option说明str是SQL语句
str="T"
oConn.Execute (str,,AdCmdTable)
option说明str是一个数据表,自动生成查询语句
"Select * From T"
str=proc
oConn.Execute (str,,AdCmdProc)
option说明str是一个存储过程
Num的作用
Dim Num
Num=0
str="Update userinfo Set pswd='1234' where username='ybb'"
oConn.Execute (str,Num,AdCmdText)
执行该函数以后数据库中的数据被修改,而Num的值为被修改的记录数
极其像C++里的按指针或者按引用调用,在被调函数内修改调用函数的数据
4.事务处理
oConn.BeginTrans
...
IF oConn.Errors.count=0 Then
oConn.CommitTrans
Else
oConn.RollbackTrans
End IF
5.关闭连接,释放对象
oConn.close
oConn=Nothing
***************************************************************************************
Command对象
1.设置连接对象
Set oCmd=Server.CreateObject("ADODB.Command")
oCmd.ActiveConnection=oConn
2.执行查询
Dim Str
oCmd.CommandText=Str
oCmd.CommandType=CmdType
oCmd.Execute [Num],[Parameter],[option]
Set oRs=oCmd.Execute [Num],[Parameter],[option]
在执行SQL命令的时候不指定命令类型也能运行,不过效率会低一点
3.创建参数对象并添加到命令对象的参数集合
Set oP=oCmd.CreateParameter(Name,Type,Direction,Size,value)
Str="Select * From userinfo where username=?"
oCmd.CommandText=Str
Set oP=oCmd.CreateParameter(,AdChar,,50,"ybb")
oCmd.Parameters.Append oP
oCmd.Execute
参数对象用来取代命令中的占位符(?)从而动态执行命令
4.使用过程
Dim Str
Str="test"
oCmd.CommandText=Str
oCmd.CommandType=AdCmdProc
oCmd.Execute
如果存储过程需要参数那么通过参数对象传递参数对象到存储过程
****************************************************************************************
RecordSet对象
1.产生记录集
Dim Str
Set oRs=Server.CreateObject("ADODB.RecordSet")
oRs.Source=Str
oRs.ActiveConnection=oConn
oRs.CursorType=CursorType
oRs.LockType=LockType
oRs.Open [option]
oRs.Open Str,oConn,CursorType,LockType,[option]
option同Connection对象
如果Str设置为oCmd那么等同于
oRs.ActiveCommand=oCmd
2.操作记录集
0)数据库支持情况
Dim chk
chk=oRs.support(str)
1)修改记录
oRs.Lock<>AdLockReadOnly
oRs.Fields("key")=N
oRs.UpDate
2)增加新记录
oRs.Lock<>AdLockReadOnly
oRs.AddNew
oRs.Fields("key")=N
....
oRs.UpDate
3)删除记录
oRs.Lock<>AdLockReadOnly
Dim Num
oRs.Delete [Num]
oRs.CancelUpdate
Num=1 删除当前记录(默认值)
Num=2 删除满足Filter的记录
4)刷新记录
oRs.Requery
5)复制记录
Set oRs2=oRs.Clone
3.记录分页
oRs.MaxRecord=N '返回记录的最大数,默认是0,表示返回所有记录
oRs.PageSize=10 '每页的记录数
oRs.Open str
Response.write oRs.MaxRecord '打开后只读
Response.write oRs.PageSize '打开后只读
Response.write oRs.RecordCout '总记录数,只读属性
Response.write oRs.PageCount '页数,只读属性
Response.write oRs.AbsolutePage '当前记录所在页,只读属性
Response.weite oRs.AbsolutePosition '当前记录的绝对位置,只读属性
oRs.RecordCount<=oRs.MaxRecord
4.移动记录
1)oRs.Move Num,[start]
2)oRs.MoveFirst
3)oRs.MoveLast
4)oRs.MoveNext
5)oRs.MovePrevious
oRs.Move Num,[start]
Num>0 从当前记录或start向后移动Num条记录
Num<0 从当前记录或start向前移动Num条记录
5.判断当前记录的位置
oRs.BOF=true '指针指向第一条记录之前,只读属性
oRs.FOF=true '指针指向最后的记录之后,只读属性
oRs.BOF=false AND oRs.EOF=false
'当前记录在记录集之内
6遍历当前记录字段
For i=0 To oRs.Fields.Count-1
Response.write oRs.Fields.Item(i).value
Next
7.过滤记录
str="select A,B From Test"
oRs.Open str
oRs.Filter="A>1000"
'等价于select A,B From Test Where A>1000
....
oRs.Filter=""
'还原
8.关闭记录集,释放对象
oRs.close
oRs=Nothing
(vbscript描述)
****************************************************************************************************
Connection对象
1.设置连接
Dim Str
1)系统DSN连接ACCESS
Str="DSN=MyDsn"
2)文件DSN连接ACCESS
Str="FileDsn='c:...*.dsn'"
3)DSN-LESS连接ACCESS
Str="Driver={Microsoft Access Driver (*.mdb)};DBQ=path"
4)OLEDB连接ACCESS
Str="provider=Microsoft.Jet.OLEDB.4.0;Data Source=path"
5)系统DSN连接SQL SERVER
Str="Dsn=MyDsn;User ID=sa;password=;"
6)文件DSN连接SQL SERVER
Str="FileDSN=c:...*.dsn;User ID=sa;password=;"
7)DSN-LESS连接SQL SERVER
Str="Driver={SQL Server};server=(local);User ID=sa;password=;Database=DBName"
8)OLEDB连接SQL SERVER
Str="Provider=SqlOleDb;User ID=sa;password=;Initial Catalog=DBName;DataSource=ISVR"
连接字符串里一般包含,数据供应程序(数据库软件),数据库位置(SQL SERVER只要指定数据库名即可)
用户名,密码
2.打开连接的方式
oConn.open([Str],[userid],[pswd])
1)Dim Str
Set oConn=Server.CreateObject("ADODB.Connection")
oConn.ConnectionString=Str
oConn.Open [,userid,pswd]
2)Dim Str
Set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open Str [,userid,pswd]
在打开SQL数据库时,连接字符串不包含用户名与密码信息时userid,pswd就必须作为参数传入函数
3.执行查询
oConn.Execute str
oConn.Execute (str,[Num],[option])
Set oRs=oConn.Execute (str,[Num],[option])
option包含命令类型(Command Type)和执行类型(Execute Type)两种
str="insert into userinfo (uname,pswd) values('ybb','123')"
oConn.Execute (str,,AdCmdText)
option说明str是SQL语句
str="T"
oConn.Execute (str,,AdCmdTable)
option说明str是一个数据表,自动生成查询语句
"Select * From T"
str=proc
oConn.Execute (str,,AdCmdProc)
option说明str是一个存储过程
Num的作用
Dim Num
Num=0
str="Update userinfo Set pswd='1234' where username='ybb'"
oConn.Execute (str,Num,AdCmdText)
执行该函数以后数据库中的数据被修改,而Num的值为被修改的记录数
极其像C++里的按指针或者按引用调用,在被调函数内修改调用函数的数据
4.事务处理
oConn.BeginTrans
...
IF oConn.Errors.count=0 Then
oConn.CommitTrans
Else
oConn.RollbackTrans
End IF
5.关闭连接,释放对象
oConn.close
oConn=Nothing
***************************************************************************************
Command对象
1.设置连接对象
Set oCmd=Server.CreateObject("ADODB.Command")
oCmd.ActiveConnection=oConn
2.执行查询
Dim Str
oCmd.CommandText=Str
oCmd.CommandType=CmdType
oCmd.Execute [Num],[Parameter],[option]
Set oRs=oCmd.Execute [Num],[Parameter],[option]
在执行SQL命令的时候不指定命令类型也能运行,不过效率会低一点
3.创建参数对象并添加到命令对象的参数集合
Set oP=oCmd.CreateParameter(Name,Type,Direction,Size,value)
Str="Select * From userinfo where username=?"
oCmd.CommandText=Str
Set oP=oCmd.CreateParameter(,AdChar,,50,"ybb")
oCmd.Parameters.Append oP
oCmd.Execute
参数对象用来取代命令中的占位符(?)从而动态执行命令
4.使用过程
Dim Str
Str="test"
oCmd.CommandText=Str
oCmd.CommandType=AdCmdProc
oCmd.Execute
如果存储过程需要参数那么通过参数对象传递参数对象到存储过程
****************************************************************************************
RecordSet对象
1.产生记录集
Dim Str
Set oRs=Server.CreateObject("ADODB.RecordSet")
oRs.Source=Str
oRs.ActiveConnection=oConn
oRs.CursorType=CursorType
oRs.LockType=LockType
oRs.Open [option]
oRs.Open Str,oConn,CursorType,LockType,[option]
option同Connection对象
如果Str设置为oCmd那么等同于
oRs.ActiveCommand=oCmd
2.操作记录集
0)数据库支持情况
Dim chk
chk=oRs.support(str)
1)修改记录
oRs.Lock<>AdLockReadOnly
oRs.Fields("key")=N
oRs.UpDate
2)增加新记录
oRs.Lock<>AdLockReadOnly
oRs.AddNew
oRs.Fields("key")=N
....
oRs.UpDate
3)删除记录
oRs.Lock<>AdLockReadOnly
Dim Num
oRs.Delete [Num]
oRs.CancelUpdate
Num=1 删除当前记录(默认值)
Num=2 删除满足Filter的记录
4)刷新记录
oRs.Requery
5)复制记录
Set oRs2=oRs.Clone
3.记录分页
oRs.MaxRecord=N '返回记录的最大数,默认是0,表示返回所有记录
oRs.PageSize=10 '每页的记录数
oRs.Open str
Response.write oRs.MaxRecord '打开后只读
Response.write oRs.PageSize '打开后只读
Response.write oRs.RecordCout '总记录数,只读属性
Response.write oRs.PageCount '页数,只读属性
Response.write oRs.AbsolutePage '当前记录所在页,只读属性
Response.weite oRs.AbsolutePosition '当前记录的绝对位置,只读属性
oRs.RecordCount<=oRs.MaxRecord
4.移动记录
1)oRs.Move Num,[start]
2)oRs.MoveFirst
3)oRs.MoveLast
4)oRs.MoveNext
5)oRs.MovePrevious
oRs.Move Num,[start]
Num>0 从当前记录或start向后移动Num条记录
Num<0 从当前记录或start向前移动Num条记录
5.判断当前记录的位置
oRs.BOF=true '指针指向第一条记录之前,只读属性
oRs.FOF=true '指针指向最后的记录之后,只读属性
oRs.BOF=false AND oRs.EOF=false
'当前记录在记录集之内
6遍历当前记录字段
For i=0 To oRs.Fields.Count-1
Response.write oRs.Fields.Item(i).value
Next
7.过滤记录
str="select A,B From Test"
oRs.Open str
oRs.Filter="A>1000"
'等价于select A,B From Test Where A>1000
....
oRs.Filter=""
'还原
8.关闭记录集,释放对象
oRs.close
oRs=Nothing
[1]





