邪恶八进制信息安全团队技术讨论组's Archiver

勇敢的风 2007-12-31 08:53

[原创]《风的asp系列教程》(第一章 第六节)

文章作者:勇敢的风 [E.S.T 顾问团]
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])

近期沉迷网游,中间写过一次,在基本写完时停电了,很遗憾没存一下子让继续写的兴趣大减,才导致本节长时间不能与大家见面。

第一章 第六节 关于ADO
  Microsoft ActiveX Data Objects(ADO) 由于上一节的附件中含有ADO手册,所以有关ADO的描述、介绍等等信息不再介绍。
  通俗点讲ADO就是让程序或脚本等访问数据库的桥梁,例如:vbscript、jscript、vb、vc、vj、vba等。
  在第四节中仅介绍了ado连接数据库的Connection对象的应用以及简单的读取表的方法,本节来详细介绍有关如何使用ado操作数据库的各种方法。
  6.1 ADO基础
    在ADO手册的教程中已经给出了操作方案,如下:
      6.1.a 连接数据源 (Connection),可选择开始事务。
      6.1.b 可选择创建表示 SQL 命令的对象 (Command)。
      6.1.c 可选择指定列、表以及 SQL 命令中的值作为变量参数 (Parameter)。
      6.1.d 执行命令(Command、Connection 或 Recordset)。
      6.1.e 如果命令以行返回,将行存储在存储对象中 (Recordset)。
      6.1.f 可选择创建存储对象的视图以便进行排序、筛选和定位数据 (Recordset)。
      6.1.g 编辑数据。可以添加、删除或更改行、列 (Recordset)。
      6.1.h 在适当情况下,可以使用存储对象中的变更对数据源进行更新 (Recordset)。
      6.1.i 在使用事务之后,可以接受或拒绝在事务中所做的更改。结束事务 (Connection)。
    ado手册中的的练习演练等都是很笼统的,继承了MS说明文档的一贯作风,下面跟据我自己的实践来说明上述内容。注:下面的演练是就我自己的习惯,与手册中的介绍不一样,区别在于我的习惯变量少一点。
    6.1.1 要使用ADO就要先创建一个ADO的连接对象,然后进行操作,代码:
      Dim Conn
      Set Conn = Server.Createobject("adodb.connection")
    6.1.2 然后开始连接数据库,如:
      Conn.open"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("数据库所在路径")
      打开其他数据库的方法请参阅第四节或者ADO手册中的Open方法。
      上面一行代码对应 6.1.b至6.1.d这里只不过用了一行代码,分解代码如下:
      
      注:这里我们看到了ASP对象Server的MapPath方法,就是将相对路径转换为绝对路径,熟悉html的朋友可能对这个不是很了解。
        相对路径:与代码所在的文件对比的路径例如:c:\www\index.asp、c:\db\db.mdb,db.mdb相对与index.asp的路径是../db/db.mdb
        绝对路径:代码所在的文件在计算机上路径。
        使用servre.mappath("../db/db.mdb")将返回c:\db\db.mdb
    6.1.3 数据库连接完后就可以做相应的表操作了,表操作需要建立ADO的Recordset对象。如:
      dim rs
      set rs = Server.Createobject ("Adodb.Recordset")
    6.1.4 接下来就要打开数据库的表了
      rs.open "select * from account",conn,0,1
      注:上面的0和1表示读取数据库的游标属性,详细方法可参阅ado手册中CursorType属性和LockType属性。
    6.1.5 技巧:MS官方给了一个推荐的方法Getrows,该方法详细用法请参阅ado手册。
      示例:
        Dim Ars
        Ars = rs.Getrows
      该方法是将已经从数据库获得的数据一次性存放到某个数组变量中,在使用该数据时则不在读取数据库,从而提高效率。
    6.1.6 获得到数据库的数据,就要将其输出。如下:
      response.write Ars(0,0) '第一个表示列,第二个表示行
    6.1.7 很多初学者,当然也包括我开始学习的时候,在写东西的时候总是忽略释放变量所占用的内存,这点是非常不可取的。当完成了一系列动作后无用的变量一定要释放了,特别是占用空间比较大的,写一些小的代码的时候感觉不到,当写数万访问量的站点的时候,影像是相当大的。
      Set Ars = nothing
      rs.close
      set rs = nothing
      conn.close
      set conn = nothing
    上面从6.1.a-6.1.i是ado手册中给出的一系列动作,对应于我的演示6.1.1-6.1.7。ado手册中的的练习演练等都是很笼统的,继承了MS说明文档的一贯作风。6.1.*的演练是就我自己的习惯,虽然不能完全对应于6.1.n,但所有内容在两者中均能找到对应的地方。有关修改数据等等将会在以后的sql章节中和实战演练中详细介绍。
  6.2 ADO高级
    ado接口不仅提供了读取数据库数据的方案,而且提供了读取数据库表属性的方法。比如通过ado可以获得数据库表的创建日期,修改日期,表的类型(隐藏、系统等)等等。假如有一天你在网上下载了一个access数据库,用office打开后却发现数据数据库中却没有任何表,然而却可以让程序正常运行,那么程序所调用的表一定是被隐藏起来了,这时要查看表的内容就需要通过ado了。这部分内容将在第3章中详细介绍。

本节我们学习了ADO最长用的方法以及server对象的mappath方法,有关最基础的内容到本节就算全部结束了,下一节我们将分多个部分来学习如何做一个bbs。bbs是一个非常典型的程序,几乎可以用到asp、ado、vbscript的方方面面,当完成详细的完成bbs程序的学习后相信您一定会对asp的认识大幅提高。
   


页: [1]
© 1999-2008 EvilOctal Security Team