• BOF和EOF的详细解释 ADO的三个核心对象


      使用ADO连接数据库进行查一个列表询的时候,数据库将查询结果返回查询端,在查询端的内存里面就会有一个列表,这个列表存放的就是查询的结果。这个内存中的列表就是数据集。在你的程序里面rs就是标识的这个数据集。BOF表示rs当前的指针是指在了数据集的前面,比如数据集里面有编号为1,2,3,4的4条记录,但是rs指向的编号是-1,这样就会符合了BOF的情况。同理,当rs的指针指向5,而第五条记录并不存在,这样就会产生了EOF的情况。

      如果同时产生了BOF和EOF的情况,就是说rs的指针既在上界之外也在下届之外,这样只有一种情况,就是rs所代表的数据集是空的,这样rs的指针无论是指到什么地方都是同时具有BOF和EOF的属性。

      情况估计是SQL语句查询出来的值是空的,因此数据集也是空的,在读取rs数据集里面的值的时候就会报这个错误。

      使用 if rs.bof and rs.eof then 这个判断可以判别rs里面是否有没有数据集,如果符合这个条件,说明数据集是空的,在程序中就要绕开对rs里字段的访问。

      理解:

      BOF和EOF是指记录集指针移动位置,它是记录集对象的一种方法,BOF是指记录集对象的指针是否移动到第一条记录之前,BOF是指记录集对象的指针是否移动到最后一条记录之后.它的返回类型是布尔型。

      如果当前记录位于第一个记录之前,BOF属性将返回True(-1),如果当前记录为第一个记录或位于其后则将返回False(0);同样EOF也是类似,如果当前记录位于Recordset对象的最后一个记录之后EOF属性将返回True,而当前记录为Recordset对象的最后一个记录位于其前,则将返回False。

      BOF指示当前记录位置位于Recordset对象的第一个记录之前。

      EOF指示当前记录位置位于Recordset对象的最后一个记录之后

       BOF和EOF的运用:如果BOF或EOF属性为False,则当前还有记录,可以利用现有的记录去与将要添加的记录去比较是否相同。例如:学号的添加中是要查询 数据库中将要添加的学号是否与已有的学号相同。

    ADO的三个核心对象:

      Connection对象:

        Connection对象表示到数据库的连接,它管理应用程序和数据库之间的通信。下面将介绍的Recordset和Connection对象都有一个ActiveConnection属性,该属性用来引用Connection对象。

      Command对象:

        Command对象用来处理重复执行的查询,或处理需要检查在存储过程调用中的输出或返回参数的值的查询。

      Recordset对象:

        Recordset对象用来获取数据。Recordset对象存放查询的结果,这些结果由数据的行(称为记录)和列(称为字段)组成,每一列都存放在Recordset的Fields集合中的一个Field对象中。

  • 相关阅读:
    我藏在你的心里,你却不愿意寻找# BUG躲猫猫
    阴间需求之跨端登录
    神奇的props
    map与filter:你先我先?
    阴间BUG之动态路由刷新几率回首页
    阴间BUG之动态路由添加失败
    我在eltable就变了个模样,请你不要再想我,想起我
    SCP打包部署方法
    indexOf 与 includes
    YACC和BISON学习心得
  • 原文地址:https://www.cnblogs.com/wjq13752525588/p/11579923.html
Copyright © 2020-2023  润新知