ATL OLE DB 使用者向导

更新:2007 年 11 月

此向导安装 OLE DB 使用者类,该类包含通过指定的 OLE DB 提供程序访问指定数据源所需的数据绑定。

说明:

此向导要求在 Class 和“.h 文件”字段中输入名称之前,单击“数据源”按钮选择数据源。

  • 数据源
    “数据源”按钮使您可以使用指定的 OLE DB 提供程序设置指定的数据源。单击此按钮时,将出现“数据链接属性”对话框。有关生成连接字符串和“数据链接属性”对话框的更多信息,请参见 Windows SDK 文档中的数据链接 API 概述

    说明:

    在以前的版本中,按住 Shift 单击“数据源”按钮将打开“文件打开”对话框,从中可以选择数据链接 (.udl) 文件。不再支持该功能。

    此对话框有四个选项卡:

    • **“提供程序”**选项卡

    • “连接”选项卡

    • “高级”选项卡

    • “全部”选项卡

  • Class
    选定数据源后,根据选定的表或存储过程在此框中填充默认类名(请参见下面的“选择数据源”)。可以编辑类名。

  • .h 文件
    选定数据源后,根据选定的表或存储过程在此框中填充默认头类名(请参见下面的“选择数据源”)。可编辑头文件的名称或选择现有的头文件。

  • 属性化
    此选项指定向导是使用属性还是模板声明来创建使用者类。若选择此选项,向导将使用属性而不是模板声明(这是默认选项)。若撤消选择此选项,向导将使用模板声明而不是属性。

    • 如果为使用方“类型”选择“表”,向导将使用 db_sourcedb_table 属性来创建表和表访问器类声明,并使用 db_column 来创建列映射,例如:

      // Inject table class and table accessor class declarations
      [
          db_source("<initialization_string>"),
          db_table("dbo.Orders")
      ]
      ...
      // Column map
          [ db_column(1, status=m_dwOrderIDStatus,         length=m_dwOrderIDLength) ] LONG m_OrderID;
          [ db_column(2, status=m_dwCustomerIDStatus,         length=m_dwCustomerIDLength) ] TCHAR m_CustomerID[6];
          ...
      

      而不是使用 CTable 模板类来声明表和表访问器类,并使用 BEGIN_COLUMN_MAP 和 END_COLUMN_MAP 宏来创建列映射,例如:

      // Table accessor class
      class COrdersAccessor;
      // Table class
      class COrders : public CTable<CAccessor<COrdersAccessor> >;
      ...
      // Column map
      BEGIN_COLUMN_MAP(COrderDetailsAccessor)
          COLUMN_ENTRY_LENGTH_STATUS(1, m_OrderID,         m_dwOrderIDLength, m_dwOrderIDStatus)
          COLUMN_ENTRY_LENGTH_STATUS(2, m_CustomerID,         m_dwCustomerIDLength, m_dwCustomerIDStatus)
          ...
      END_COLUMN_MAP()
      
    • 如果为使用方“类型”选择“命令”,向导将使用 db_sourcedb_command 属性,并使用 db_column 来创建列映射,例如:

      [
          db_source("<initialization_string>"),
          db_command("SQL_command")
      ]
      ...
      // Column map using db_column is the same as for consumer type of 'table'
      

      而不是在命令类的 .h 文件中使用命令和命令访问器类声明,例如:

      Command accessor class:
      class CListOrdersAccessor;
      Command class:
      class CListOrders : public CCommand<CAccessor<CListOrdersAccessor> >;
      ...
      // Column map using BEGIN_COLUMN_MAP ... END_COLUMN_MAP is the same as
      // for consumer type of 'table'
      

    有关更多信息,请参见Basic Mechanics of Attributes

  • 类型
    选择这些单选按钮之一,指定使用者类是从 CTable 还是从 CCommand(默认值)派生。


    • 如果要使用 CTabledb_table 创建表和表访问器类声明,则选择此选项。

    • 命令
      如果要使用 CCommanddb_command 创建命令和命令访问器类声明,则选择此选项。这是默认选择。

  • 支持
    选择复选框可以指定使用者中支持的更新类型(默认为“无”)。下列每个选项都在属性集映射中设置 DBPROP_IRowsetChange 和适当的 DBPROP_UPDATABILITY 项。

    • 更改
      指定使用者支持更新行集合中的原始数据。

    • 插入
      指定使用者支持在行集合中插入行。

    • 删除
      指定使用者支持从行集合中删除行。

请参见

任务

添加 ATL OLE DB 使用者

概念

用代码向导添加功能

参考

连接字符串和数据链接 (OLE DB)