zoukankan      html  css  js  c++  java
  • 【数据库】MFC ODBC(四)

    7、滚动记录

    CRecordset提供了几个成员函数用来在记录集中滚动。当用这些函数滚动到一个新记录时,框架会自动地把新记录的内容拷贝到域数据成员中。

    void MoveNext( );  //前进一个记录
    void MovePrev( );  //后退一个记录
    void MoveFirst( ); //滚动到记录集中的第一个记录
    void MoveLast( );  //滚动到记录集中的最后一个记录
    //该函数用于滚动到由参数nRows指定的绝对位置处。若nRows为负数,则从后往前滚动。例如,当nRows为-1时,函数就滚动到记录集的末尾。注意,该函数不会跳过被删除的记录。
    void SetAbsolutePosition( long nRows );

    注意:如果记录集是空的,那么调用上述函数将产生异常。另外,必须保证滚动没有超出记录集的边界。

    long GetRecordCount( ) const;// 调用GetRecordCount可获得记录集中的记录总数。

    注意:GetRecordCount返回的实际上是用户在记录集中滚动的最远距离。要想真正返回记录总数,只有调用MoveNext移动到记录集的末尾(MoveLast不行)。

    8、修改、添加和删除记录

    (1)修改记录

    1)调用Edit成员函数。调用该函数后就进入了编辑模式,程序可以修改域数据成员。注意不要在一个空的记录集中调用Edit,否则会产生异常。

    2)设置域数据成员的新值。

    3)调用Update完成编辑。Update把变化后的记录写入数据源并结束编辑模式。

    m_ChangeLineSet.Edit();
    
    //字段设置...
    m_ChangeLineSet.m_Date=datatemp.Date;
    
    //更新记录
    m_ChangeLineSet.Update();
    
    //重建记录集
    m_ChangeLineSet.Requery();

    (2)添加记录

    1)调用AddNew成员函数。调用该函数后就进入了添加模式,该函数把所有的域数据成员都设置成NULL(注意,在数据库术语中,NULL是指没有值,这与C++的NULL是不同的)。与Edit一样,AddNew会把当前域数据成员的内容保存在一个缓冲区中。

    2)设置域数据成员。

    3)调用Update。Update把域数据成员中的内容作为新记录写入数据源,从而结束了添加。如果记录集是快照,那么在添加一个新的记录后,需要调用Requery重新查询,因为快照无法反映添加操作。

    if (m_ChangeLineSet.CanAppend()) {
        m_ChangeLineSet.AddNew();
        
        //字段设置...
        m_ChangeLineSet.m_Date=datatemp.Date;
    
        //更新记录
        m_ChangeLineSet.Update();
        
        //重建记录集
        m_ChangeLineSet.Requery();
    
    }

    (3)删除记录

    1)调用Delete成员函数。该函数会同时给记录集和数据源中当前记录加上删除标记。注意不要在一个空记录集中调用Delete,否则会产生一个异常。

    2)滚动到另一个记录上以跳过删除记录。

    //删除记录集,不需要Update
    if (m_ChangeLineSet.CanUpdate())
        m_ChangeLineSet.Delete();

    在对记录集进行更改以前,程序也许要调用下列函数来判断记录集是否是可以更改的,因为如果在不能更改的记录集中进行修改、添加或删除将导致异常的产生。

    BOOL CanUpdate( ) const;  //返回TRUE表明记录是可以修改、添加和删除的。
    BOOL CanAppend( ) const;  //返回TRUE则表明可以添加记录。
  • 相关阅读:
    Android 使用系统签名打包apk
    创业公司如何巧用工具提高团队生产力——豌豆荚创始人王俊煜讲述团队背后的“利器”
    Spring整合BoneCP+Hibernate配置数据连接池
    EhCache集群方案JGroups
    IOS 目录结构
    关于hibernate的缓存使用
    用webbrowser控件做一个资源管理器,如何得到IE控件中选中(鼠标多选)的文件名称列表?
    轮回!
    转载:谨以此文献给才毕业25年的朋友
    新的开始
  • 原文地址:https://www.cnblogs.com/mengwang024/p/4857892.html
Copyright © 2011-2022 走看看