ASP中数组与记录集的使用

lgzhorse 发表于 2007-4-28 14:17:08

废话少说,先看一段代码:

  1. '' Auhthor
  2. '' http://www.xujiwei.cn/
  3. '' 定义变量
  4. Dim conn,rs,data,recN,i
  5. '' 连接数据库
  6. Set conn=Server.CreateObject("ADODB.Connection")
  7. conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &_
  8.     Server.MapPath("data.mdb")
  9. '' 获取记录集
  10. Set rs=conn.Execute("SELECT id,first,second FROM mytable")
  11. '' 获取数据数组
  12. data=rs.GetRows()
  13. '' 关闭记录集,释放对象
  14. rs.Close()
  15. Set rs=Nothing
  16. '' 获取记录数
  17. recN=UBound(data,2)
  18. '' 循环输出数据
  19. For i=0 To recN
  20.     '' 注意,数组下标从0开始
  21.     '' 显示数据库中数据
  22.     Response.Write("ID: "&data(0,i)&", First: "&data(1,i)&_
  23.         ", Second: "&data(2,i)&"<br />")
  24. Next
  25. '' 关闭数据库连接,释放对象
  26. conn.Close()
  27. Set conn=Nothing
  28. %

之所以用数组,好处是能够较早的释放记录集对象,提高程序执行的效率和代码的清晰度.大家看这组代码时,可能对ubound函数不太清楚,特作一解释.
UBOUND返回的是一维数组的最大下标,而不是元素个数。 比如:Dim Myarray(5),那么UBOUND(Myarray)返回的值是5,而不是6。 UBOUND也可以应用于二维数组。应用于二维数组时,它返回的是第一个下标的最大值。

比如:Dim Myarray(6,3),

那么UBOUND(Myarray)返回的值是6,而不是7,更不是18(6*3=18)。

若要返回第二个下标的最大值,则使用:UBOUND(Myarray,2)。

与UBOUND相对应的是另外一个函数:LBOUND,它返回数组的最小下标。与UBOUND类似,LBOUND(Myarray,2)则返回数组MYARRAY的第二个下标的最小值。所以,准确地说,一维数组Myarray的元素个数为:UBOUND(Myarray)-LBOUND(Myarray)+1,而二维数组的元素个数则为:

(UBOUND(Myarray)-LBOUND(Myarray)+1)*(UBOUND(Myarray,2)-LBOUND(Myarray,2)+1)

发表评论:

    昵称:
    密码: (游客无须输入密码)
    主页:
    标题:
Powered by Oblog.