16.ADO

一、VC访问数据库技术

  1. ODBC

    Open Database Connectivity,微软开放式数据互联。

    使用相同的这组API函数,访问和操作不同类型的数据库。

    前提是在访问之前,需要将数据库设置为ODBC数据源。

    MFC将这组函数封装,形成了ODBC类。只能访问关系型数据库。

  2. DAO

    基于ODBC的,目前已淘汰。

  3. OLE DB

    基于COM组件技术的,提供了一组用于访问和操作数据库的接口。

    功能和性能上都有了很大提高,能访问关系型和非关系型数据库。

    缺点是学习门槛高,比较复杂抽象。

  4. ADO

    基于OLE DB的,又做了封装,提供了更加简单的接口,逐渐流行起来,成为最广泛使用的技术之一。

  5. ADO.Net

    基于.Net平台,VB、VC、C#都可以使用一组访问数据库的类。

二、使用ODBC类访问数据库

  1. 相关类

    CDataBase类 - 功能是连接和关闭数据库,还提供了执行SQL语句的功能。

    CRecordset类 - 功能是操作数据表中的数据。

    头文件 #include <afxdb.h>

  2. 使用

    2.1 设置ODBC数据源

      控制面板 --> 管理工具 --> 数据源ODBC

    2.2 打开数据源

      virtual  void  CDatabase::Open( LPCTSTR  lpszName,

                                                              BOOL       bExclusive = FALSE,

                                                              BOOL       bReadOnly = FALSE,

                                                              LPCTSTR   lpszConnect = _(""));

    2.3 执行sql语句

      void  CDataBase::Execute( LPCTSTR  lpszSQL, int  nOptions = 0);

    2.4 获取字段的数量

      short  CRecordset::GetODBCFieldCount( short  nIndex, CString&  strValue );

    2.4 获取字段的标题

      void  CRecordset::GetODBCFieldInfo( short  nIndex, CODBCFieldInfo&  fieldInfo );

    2.6 获取字段的值

      CRecordset::GetFieldValue

    2.6 记录集的指针操作

      BOOL  CRecordset::IsEOF( );

      void  CRecordset::MoveNext( );

    2.8 关闭记录集

      virtual  void  CRecordset::Close( );

    2.9 关闭数据库

      virtual  void  CDatabase::Close( );

三、使用ADO访问数据库

  ADO是独立于MFC之外一个单独的组件。在使用ADO时,需要将ADO组件导入到当前工程。

  1. 导入ADO组件 - msado15.dll

    #import  "组件路径"  no_namespace  rename("EOF", "ADOEOF")

    我电脑上的路径为:C:\Program Files\Common Files\System\ado\msado15.dll

    在工程的stdafx.h中添加以上导入语句,编译工程会生成msado15.tlh和msado15.tli两个文件

  2. 使用ADO组件前,初始化COM库

    CoInitialize(NULL); - 初始化COM库

    CoUninitialize(); - 卸载COM库

  3. 在MFC中使用ADO组件,需要C++数据类型与COM数据类型频繁转换,使得ADO组件的使用变得非常繁琐

    在实际开发中,将ADO组件的每个接口封装成C++的类,接口函数封装成类的成员函数,形成ADO组件的

    C++封装类。

  4. 接口的介绍

    4.1 Connection接口 - 功能与CDatabase类似

      使用CAdoDatabase类封装该接口

    4.2 Recordset接口 - 功能与CRecordset类似

      使用CAdoRecordset类封装该接口

  5. Connection接口的使用

    5.1 连接数据库

      Open( _bstr_t   connectionString,  //数据库连接字符串

                          _bstr_t   UserID,                 //数据库登录名称

                          _bstr_t   Password,             //数据库登录密码

                          long        option);                //数据库连接方式,-1表示不指定连接方式

      不同的数据库产品,数据库连接字符串各不相同。

      即使相同的数据库产品,由于版本不同,连接字符串也可能不同。

  6. Recordset接口的使用

    6.1 打开表

      Open( );

 

 

 

 

    

 

 

    

    

 

  

      

 

 

 

 

    

posted @ 2016-08-08 15:50  甩锅侠  阅读(144)  评论(0编辑  收藏  举报