当前位置:站长之家学习教程网站运营网站建设 → 文章内容

本人写的ADO使用指南

减小字体 增大字体 作者:佚名  来源:不详  发布时间:2005-12-13 14:04:24
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

[1]