封装ADO之MFC应用

  Microsoft ActiveX Data Objects (ADO) 支持用于建立基于客户端/服务器和 Web 的应用程序的主要功能。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。
 本次封装的CadoInterface类仅针对MFC的使用,目的是优化对ADO的操作,避免频繁写try  catch(…)以及在连库、开表、写数据、读数据等过程中一些重复性的工作。该类仅对一些常用的操作进行封装,用户可以根据需要进行修改和扩展。
  封装类主要包括:基本操作、增值操作、支持算法与支持结构。基本操作、增值操作、支持算法在AdoInterface.h与AdoInterface.cpp中声明定义,支持结构在DataBelong.h中定义。
  这里主要介绍该类的应用,实现细节的说明在代码中均有注释。

一、封装类的关系
   图一 封装类关系图,箭头代表包含关系,用户使用时只需包含界面文件AdoInterface.h
二、基本操作部分
(一)连接数据库
      CString Conn="provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb"; 
      myado.ConnecDataLibrary(Conn,"","");
   本例连接了一个无密码的Access库,如用其他方式连接数据库,用户可自行更改连接字符串,或者以枚举方式将多种连接方式封装到本函数中。
(二)开表
      myado.OpenSheet("select * from file");
  用户仅需给出开表条件即可,其他的枚举参数均有默认值,如用户需要以不同方式打开,则可以重新给定枚举参数的默认值。
(三)关库、关表
      myado.CloseSheet();
      myado.CloseDataLibrary();
(四)返回指针
      myado.GetConnPtr();
      myado.GetRecoPtr();
  如用户的需求超出本类提供的操作时,可以通过这两个函数获取_ConnectionPtr与_RecordsetPtr指针,调用ADO的操作。
(五)属性判断
      myado.BOF();
      myado.adoEOF();
(六)指针的移动
   5种基本的指针移动(包括:MoveFirst、MoveLast、MoveNext、MovePrevious与Move(long Num))。   
(七)执行SQL语句
      CString str="Delete from file where AGE=36";
      myado.Execute(str);
(八)获得字段内容
       _variant_t str;
       myado.GetCollect("NAME",str);
       CString name=str;
(九)删除一条记录
       myado.Delet();
 默认删除当前记录,用户可根据需要修改枚举参数。
三、增值操作部分
(一)追加一条新记录
       AddNewCode insert[3];
       insert[0].ColName="NAME";             insert[0].Value="插入一条新记录";
       insert[1].ColName="AGE";              insert[1].Value=18;
       insert[2].ColName="TIME";             insert[2].Value="1999/9/9";
       myado.AddNewRecode(insert,3);
  用户需要确定向该条记录的哪些字段添写数据,然后根据字段的个数定义数组(AddNewCode为支持结构)。本函数需要两个参数:支持结构的数组指针与添写字段的个数。
(二)追加一条新记录(扩展)
       myado.AddNewRecodeEx2("FF,NAME,小数,NUM,AGE,TIME",-2.17,"查林杰",3.1415927,10,-18,"1995/6/9");
  该函数采用了未定参数的形式(类似于CString中的Format()函数形式)。
  第一个参数为要写入字段的字段名,字段名要以字符串方式给出,字段名之间用逗号分开;后面的参数为赋值参数,要与前面的字段名一一对应,赋值方式参考应用举例。
(三)获取一条记录的内容
      _variant_t ColName[5];
      ColName[0]="ID";ColName[1]="NAME";ColName[2]="AGE";ColName[3]="TIME";ColName[4]="HF";
      _variant_t OutValue[5];
      CString id,name1,age,time,hf;
      myado.GetOneRecord(ColName,5,OutValue);
      id=OutValue[0]; name1=OutValue[1]; age=OutValue[2]; time=OutValue[3]; hf=OutValue[4];
  该函数需要三个参数,第一参数要一个_variant_t数组,顺序给定要获取的字段名;第二个参数为要获取字段的个数;第三个为出参,也要一个_variant_t数组,用来顺序保存所获取的数据。
(四)获取一条记录的内容(扩展)
      long la=0,lb=0;  double da=0,db=0;  CString s1="",s2="";
      myado.GetOneRecordEx2("FF,NAME,小数,NUM,AGE,TIME",&da,&s1,&db,&la,&lb,&s2);
  该函数采用了未定参数的形式(类似于CString中的Format()函数形式)。
  第一个参数为要获取字段的字段名,字段名要以字符串方式给出,字段名之间用逗号分开;后面的参数为接收变量的地址,要与前面的字段名一一对应,函数执行后,各接收变量中保存了所获取的数据。
(五)查找
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值