OLE DB 使用者模板的宏和全局函数

OLE DB 使用者模板包括以下宏和全局函数:

全局函数

名称 描述
AtlTraceErrorRecords 如果返回错误,则将 OLE DB 错误记录信息转储到转储设备。

访问器映射宏

名称 描述
BEGIN_ACCESSOR 标记访问器条目的开头。
BEGIN_ACCESSOR_MAP 标记取值函数映射条目的开始。
END_ACCESSOR 标记访问器条目的末尾。
END_ACCESSOR_MAP 标记访问器映射条目的末尾。

列映射宏

名称 描述
BEGIN_COLUMN_MAP 标记用户记录类中列映射条目的开头。
BLOB_ENTRY 用于绑定二进制大对象 (BLOB)。
BLOB_ENTRY_LENGTH 报告 BLOB 数据列的长度。
BLOB_ENTRY_LENGTH_STATUS 报告 BLOB 数据列的长度和状态。
BLOB_ENTRY_STATUS 报告 BLOB 数据列的状态。
BLOB_NAME 用于按列名绑定二进制大对象。
BLOB_NAME_LENGTH 报告 BLOB 数据列的长度。
BLOB_NAME_LENGTH_STATUS 报告 BLOB 数据列的长度和状态。
BLOB_NAME_STATUS 报告 BLOB 数据列的状态。
BOOKMARK_ENTRY 表示行集上的书签条目。 书签条目是一种特殊的列条目。
COLUMN_ENTRY 表示与数据库中特定列的绑定。
COLUMN_ENTRY_EX 表示与数据库中特定列的绑定。 支持 type、length、precision、scale 和 status 参数
COLUMN_ENTRY_LENGTH 表示与数据库中特定列的绑定。 支持 length 变量
COLUMN_ENTRY_LENGTH_STATUS 表示与数据库中特定列的绑定。 支持 status 和 length 参数
COLUMN_ENTRY_PS 表示与数据库中特定列的绑定。 支持 precision 和 scale 参数
COLUMN_ENTRY_PS_LENGTH 表示与数据库中特定列的绑定。 支持 length 变量,以及 precision 和 scale 参数
COLUMN_ENTRY_PS_LENGTH_STATUS 表示与数据库中特定列的绑定。 支持 status 和 length 变量,以及 precision 和 scale 参数
COLUMN_ENTRY_PS_STATUS 表示与数据库中特定列的绑定。 支持 status 变量,以及 precision 和 scale 参数
COLUMN_ENTRY_STATUS 表示与数据库中特定列的绑定。 支持 status 变量
COLUMN_ENTRY_TYPE 表示与数据库中特定列的绑定。 支持 type 参数
COLUMN_ENTRY_TYPE_SIZE 表示与数据库中特定列的绑定。 支持 type 和 size 参数
COLUMN_NAME 表示与数据库中特定列的绑定(按名称)。
COLUMN_NAME_EX 表示与数据库中特定列的绑定(按名称)。 支持指定数据类型、大小、精度、标度、列长度和列状态。
COLUMN_NAME_LENGTH 表示与数据库中特定列的绑定(按名称)。 支持指定列长度。
COLUMN_NAME_LENGTH_STATUS 表示与数据库中特定列的绑定(按名称)。 支持指定列长度和状态。
COLUMN_NAME_PS 表示与数据库中特定列的绑定(按名称)。 支持指定精度和标度。
COLUMN_NAME_PS_LENGTH 表示与数据库中特定列的绑定(按名称)。 支持指定精度、标度和列长度。
COLUMN_NAME_PS_LENGTH_STATUS 表示与数据库中特定列的绑定(按名称)。 支持指定精度、标度、列长度和列状态。
COLUMN_NAME_PS_STATUS 表示与数据库中特定列的绑定(按名称)。 支持指定精度、标度和列状态。
COLUMN_NAME_STATUS 表示与数据库中特定列的绑定(按名称)。 支持指定列状态。
COLUMN_NAME_TYPE 表示与数据库中特定列的绑定(按名称)。 支持指定数据类型。
COLUMN_NAME_TYPE_PS 表示与数据库中特定列的绑定(按名称)。 支持指定数据类型、精度和标度。
COLUMN_NAME_TYPE_SIZE 表示与数据库中特定列的绑定(按名称)。 支持指定数据类型和大小。
COLUMN_NAME_TYPE_STATUS 表示与数据库中特定列的绑定(按名称)。 支持指定数据类型和列状态。
END_COLUMN_MAP 标记列映射条目的末尾。

命令宏

名称 描述
DEFINE_COMMAND 指定在使用 CCommand 类时用于创建行集的命令。 仅接受与指定的应用程序类型(ANSI 或 Unicode)匹配的字符串类型。 建议使用 DEFINE_COMMAND_EX 而不是 DEFINE_COMMAND。
DEFINE_COMMAND_EX 指定在使用 CCommand 类时用于创建行集的命令。 支持 ANSI 和 Unicode 应用程序。

参数映射宏

名称 描述
BEGIN_PARAM_MAP 标记用户记录类中参数映射条目的开头。
END_PARAM_MAP 标记参数映射条目的末尾。
SET_PARAM_TYPE 将 SET_PARAM_TYPE 宏后面的 COLUMN_ENTRY 宏指定为输入、输出或输入/输出。

AtlTraceErrorRecords

如果返回错误,则将 OLE DB 错误记录信息转储到转储设备。

语法

inline void AtlTraceErrorRecords(HRESULT hrErr = S_OK);

参数

hErr
[in] OLE DB 使用者模板成员函数返回的 HRESULT。

备注

如果 hErr 不是 S_OK,则 AtlTraceErrorRecords 会将 OLE DB 错误记录信息转储到转储设备(“输出”窗口的“调试”选项卡,或某个文件)。 从提供程序获取的错误记录信息包括每个错误记录条目的行号、源、说明、帮助文件、上下文和 GUID。 AtlTraceErrorRecords 仅在调试版本中转储此信息。 在发布版本中,它是一个经过优化的空存根。有关详细信息,请参阅 CDBErrorInfo 类

BEGIN_ACCESSOR

标记访问器条目的开头。

语法

BEGIN_ACCESSOR(num, bAuto)

参数

num
[in] 此访问器映射中的访问器的零偏移数。

bAuto
[in] 指定此访问器是自动访问器还是手动访问器。 如果为 true,则访问器是自动访问器;如果为 false,则访问器是手动访问器。 自动访问器表示在执行移动操作时系统会为你提取数据。

注解

如果行集上有多个访问器,则你需要指定 BEGIN_ACCESSOR_MAP 并为每个访问器使用 BEGIN_ACCESSOR 宏。 BEGIN_ACCESSOR 宏与 END_ACCESSOR 宏一起完成。 BEGIN_ACCESSOR_MAP 宏与 END_ACCESSOR_MAP 宏一起完成。

示例

请参阅 BEGIN_ACCESSOR_MAP

BEGIN_ACCESSOR_MAP

标记取值函数映射条目的开始。

语法

BEGIN_ACCESSOR_MAP(x, num)

参数

x
[in] 用户记录类的名称。

num
[in] 此取值函数映射中的取值函数数目。

注解

如果行集上有多个访问器,则你需要在开头指定 BEGIN_ACCESSOR_MAP 并为每个访问器使用 BEGIN_ACCESSOR 宏。 BEGIN_ACCESSOR 宏与 END_ACCESSOR 宏一起完成。 访问器映射与 END_ACCESSOR_MAP 宏一起完成。

如果在用户记录中只有一个取值函数,则使用宏 BEGIN_COLUMN_MAP

示例

class CArtistsAccessor
{
public:
// Data Elements
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];
   short m_nAge;

// Output binding map
BEGIN_ACCESSOR_MAP(CArtistsAccessor, 2)
   BEGIN_ACCESSOR(0, true)
      COLUMN_ENTRY(1, m_szFirstName)
      COLUMN_ENTRY(2, m_szLastName)
   END_ACCESSOR()
   BEGIN_ACCESSOR(1, false) // Not an auto accessor
      COLUMN_ENTRY(3, m_nAge)
   END_ACCESSOR()
END_ACCESSOR_MAP()

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsAccessor, L" \
   SELECT \
      FirstName, \
      LastName, \
      Age \
      FROM Artists")
};

END_ACCESSOR

标记访问器条目的末尾。

语法

END_ACCESSOR()

备注

对于行集上的多个访问器,需要指定 BEGIN_ACCESSOR_MAP 并为每个访问器使用 BEGIN_ACCESSOR 宏。 BEGIN_ACCESSOR 宏与 END_ACCESSOR 宏一起完成。 BEGIN_ACCESSOR_MAP 宏与 END_ACCESSOR_MAP 宏一起完成。

示例

请参阅 BEGIN_ACCESSOR_MAP

END_ACCESSOR_MAP

标记访问器映射条目的末尾。

语法

END_ACCESSOR_MAP()

备注

对于行集上的多个访问器,需要指定 BEGIN_ACCESSOR_MAP 并为每个访问器使用 BEGIN_ACCESSOR 宏。 BEGIN_ACCESSOR 宏与 END_ACCESSOR 宏一起完成。 BEGIN_ACCESSOR_MAP 宏与 END_ACCESSOR_MAP 宏一起完成。

示例

请参阅 BEGIN_ACCESSOR_MAP

BEGIN_COLUMN_MAP

标记列映射条目的开头。

语法

BEGIN_COLUMN_MAP(x)

参数

x
[in] 派生自 CAccessor的用户记录类的名称。

注解

在行集上存在单个访问器的情况下使用此宏。 如果行集上有多个访问器,则使用 BEGIN_ACCESSOR_MAP

BEGIN_COLUMN_MAP 宏与 END_COLUMN_MAP 宏一起完成。 当用户记录中只需要一个访问器时才使用此宏。

列对应行集中你希望绑定的字段。

示例

以下是示例列和参数映射:

BLOB_ENTRY

与 BEGIN_COLUMN_MAP 和 END_COLUMN_MAP 一起使用以绑定二进制大对象 (BLOB)。

语法

BLOB_ENTRY(nOrdinal, IID, flags, data)

参数

nOrdinal
[in] 列号。

IID
[in] 接口 GUID,例如 IDD_ISequentialStream,用于检索 BLOB。

flags
[in] OLE 结构化存储模型定义的存储模式标志(例如 STGM_READ)。

data
[in] 用户记录中的对应数据成员。

示例

请参阅如何检索 BLOB?

BLOB_ENTRY_LENGTH

与 BEGIN_COLUMN_MAP 和 END_COLUMN_MAP 一起使用以绑定二进制大对象 (BLOB)。 与 BLOB_ENTRY 类似,但此宏还获取 BLOB 列的长度(以字节为单位)。

语法

BLOB_ENTRY_LENGTH(nOrdinal, IID, flags, data, length)

参数

nOrdinal
[in] 列号。

IID
[in] 接口 GUID,例如 IDD_ISequentialStream,用于检索 BLOB。

flags
[in] OLE 结构化存储模型定义的存储模式标志(例如 STGM_READ)。

data
[in] 用户记录中的对应数据成员。

length
[out] BLOB 列的(实际)长度,以字节为单位。

示例

请参阅如何检索 BLOB?

BLOB_ENTRY_LENGTH_STATUS

与 BEGIN_COLUMN_MAP 和 END_COLUMN_MAP 一起使用以绑定二进制大对象 (BLOB)。 与 BLOB_ENTRY 类似,只不过此宏还获取 BLOB 列的长度和状态。

语法

BLOB_ENTRY_LENGTH_STATUS(
    nOrdinal,
    IID,
    flags,
    data,
    length,
    status )

参数

nOrdinal
[in] 列号。

IID
[in] 接口 GUID,例如 IDD_ISequentialStream,用于检索 BLOB。

flags
[in] OLE 结构化存储模型定义的存储模式标志(例如 STGM_READ)。

data
[in] 用户记录中的对应数据成员。

length
[out] BLOB 列的(实际)长度,以字节为单位。

status
[out] BLOB 数据列的状态。

示例

请参阅如何检索 BLOB?

BLOB_ENTRY_STATUS

与 BEGIN_COLUMN_MAP 或 BEGIN_ACCESSOR_MAP 一起使用以绑定二进制大对象 (BLOB)。 与 BLOB_ENTRY 类似,只不过此宏还获取 BLOB 列的状态。

语法

BLOB_ENTRY_STATUS(nOrdinal, IID, flags, data, status)

参数

nOrdinal
[in] 列号。

IID
[in] 接口 GUID,例如 IDD_ISequentialStream,用于检索 BLOB。

flags
[in] OLE 结构化存储模型定义的存储模式标志(例如 STGM_READ)。

data
[in] 用户记录中的对应数据成员。

status
[out] BLOB 字段的状态。

示例

请参阅如何检索 BLOB?

BLOB_NAME

与 BEGIN_COLUMN_MAP 和 END_COLUMN_MAP 一起使用以绑定二进制大对象 (BLOB)。 与 BLOB_ENTRY 类似,只不过此宏采用列名而不是列号。

语法

BLOB_NAME(pszName, IID, flags, data )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

IID
[in] 接口 GUID,例如 IDD_ISequentialStream,用于检索 BLOB。

flags
[in] OLE 结构化存储模型定义的存储模式标志(例如 STGM_READ)。

data
[in] 用户记录中的对应数据成员。

示例

请参阅如何检索 BLOB?

BLOB_NAME_LENGTH

与 BEGIN_COLUMN_MAP 和 END_COLUMN_MAP 一起使用以绑定二进制大对象 (BLOB)。 与 BLOB_NAME 类似,但此宏还获取 BLOB 数据列的长度(以字节为单位)。

语法

BLOB_NAME_LENGTH(pszName, IID, flags, data, length )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

IID
[in] 接口 GUID,例如 IDD_ISequentialStream,用于检索 BLOB。

flags
[in] OLE 结构化存储模型定义的存储模式标志(例如 STGM_READ)。

data
[in] 用户记录中的对应数据成员。

length
[out] BLOB 列的(实际)长度,以字节为单位。

BLOB_NAME_LENGTH_STATUS

与 BEGIN_COLUMN_MAP 和 END_COLUMN_MAP 一起使用以绑定二进制大对象 (BLOB)。 与 BLOB_NAME 类似,只不过此宏还获取 BLOB 数据列的长度和状态。

语法

BLOB_NAME_LENGTH_STATUS(pszName, IID, flags, data, length, status )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

IID
[in] 接口 GUID,例如 IDD_ISequentialStream,用于检索 BLOB。

flags
[in] OLE 结构化存储模型定义的存储模式标志(例如 STGM_READ)。

data
[in] 用户记录中的对应数据成员。

length
[out] BLOB 列的(实际)长度,以字节为单位。

status
[out] BLOB 字段的状态。

BLOB_NAME_STATUS

与 BEGIN_COLUMN_MAP 和 END_COLUMN_MAP 一起使用以绑定二进制大对象 (BLOB)。 与 BLOB_NAME 类似,但此宏还获取 BLOB 数据列的状态。

语法

BLOB_NAME_STATUS(pszName, IID, flags, data, status )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

IID
[in] 接口 GUID,例如 IDD_ISequentialStream,用于检索 BLOB。

flags
[in] OLE 结构化存储模型定义的存储模式标志(例如 STGM_READ)。

data
[in] 用户记录中的对应数据成员。

status
[out] BLOB 字段的状态。

BOOKMARK_ENTRY

绑定书签列。

语法

BOOKMARK_ENTRY(variable)

参数

variable
[in] 要绑定到书签列的变量。

示例

class CArtistsBookmark
{
public:
// Data Elements
   CBookmark<4> m_bookmark;
   short m_nAge;
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];

// Output binding map
BEGIN_COLUMN_MAP(CArtistsBookmark)
   BOOKMARK_ENTRY(m_bookmark)
   COLUMN_ENTRY(1, m_nAge)
   COLUMN_ENTRY(2, m_szFirstName)
   COLUMN_ENTRY(3, m_szLastName)
END_COLUMN_MAP()

   void GetRowsetProperties(CDBPropSet* pPropSet)
   {
      pPropSet->AddProperty(DBPROP_BOOKMARKS, true);
   }

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsBookmark, L" \
   SELECT \
      Age, \
      FirstName, \
      LastName \
      FROM Artists")
};

有关详细信息,请参阅使用书签CBookmark 类

COLUMN_ENTRY

表示行集上与行集中的特定列的绑定。

语法

COLUMN_ENTRY(nOrdinal, data)

参数

请参阅“OLE DB 程序员参考”中的 DBBINDING

nOrdinal
[in] 列号。

data
[in] 用户记录中的对应数据成员。

备注

COLUMN_ENTRY 宏在以下位置使用:

示例

请参阅宏主题 BEGIN_COLUMN_MAPBEGIN_ACCESSOR_MAP 中的示例。

COLUMN_ENTRY_EX

表示行集上与数据库中的特定列的绑定。

语法

COLUMN_ENTRY_EX(nOrdinal, wType, nLength, nPrecision, nScale, data, length, status)

参数

请参阅“OLE DB 程序员参考”中的 DBBINDING

nOrdinal
[in] 列号。

wType
[in] 数据类型。

nLength
[in] 数据大小,以字节为单位。

nPrecision
[in] 获取数据和当 wType 为 DBTYPE_NUMERIC 时使用的最大精度。 否则会忽略此参数。

nScale
[in] 获取数据和当 wType 为 DBTYPE_NUMERICDBTYPE_DECIMAL 时使用的标度

data
[in] 用户记录中的对应数据成员。

length
[in] 要绑定到列长度的变量。

status
[in] 要绑定到列变量的状态。

注解

COLUMN_ENTRY_EX 宏在以下位置使用:

示例

请参阅 BOOKMARK_ENTRY

COLUMN_ENTRY_LENGTH

表示行集上与数据库中的特定列的绑定。

语法

COLUMN_ENTRY_LENGTH(nOrdinal, data, length)

参数

请参阅“OLE DB 程序员参考”中的 DBBINDING

nOrdinal
[in] 列号,从 1 开始。 书签对应于第 0 列。

data
[in] 用户记录中的对应数据成员。

length
[in] 要绑定到列长度的变量。

备注

此宏支持 length 变量。 它在以下位置中使用:

COLUMN_ENTRY_LENGTH_STATUS

表示行集上与数据库中的特定列的绑定。

语法

COLUMN_ENTRY_LENGTH_STATUS(nOrdinal, data, length, status)

参数

请参阅“OLE DB 程序员参考”中的 DBBINDING

nOrdinal
[in] 列号。

data
[in] 用户记录中的对应数据成员。

length
[in] 要绑定到列长度的变量。

status
[in] 要绑定到列变量的状态。

备注

当您要支持长度和状态变量时,请使用此宏。 它在以下位置中使用:

COLUMN_ENTRY_PS

表示行集上与行集中的特定列的绑定。

语法

COLUMN_ENTRY_PS(nOrdinal, nPrecision, nScale, data)

参数

请参阅“OLE DB 程序员参考”中的 DBBINDING

nOrdinal
[in] 列号。

nPrecision
[in] 要绑定的列的最大精度。

nScale
[in] 要绑定的列的小数位数。

data
[in] 用户记录中的对应数据成员。

注解

允许您指定要绑定的列的精度和小数位数。 它在以下位置中使用:

COLUMN_ENTRY_PS_LENGTH

表示行集上与数据库中的特定列的绑定。

语法

COLUMN_ENTRY_PS_LENGTH(nOrdinal, nPrecision, nScale, data, length)

参数

请参阅“OLE DB 程序员参考”中的 DBBINDING

nOrdinal
[in] 列号,从 1 开始。 书签对应于第 0 列。

nPrecision
[in] 要绑定的列的最大精度。

nScale
[in] 要绑定的列的小数位数。

data
[in] 用户记录中的对应数据成员。

length
[in] 要绑定到列长度的变量。

备注

允许您指定要绑定的列的精度和小数位数。 此宏支持 length 变量。 它在以下位置中使用:

COLUMN_ENTRY_PS_LENGTH_STATUS

表示行集上与数据库中的特定列的绑定。

语法

COLUMN_ENTRY_PS_LENGTH_STATUS(nOrdinal, nPrecision, nScale, data, length, status)

参数

请参阅“OLE DB 程序员参考”中的 DBBINDING

nOrdinal
[in] 列号。

nPrecision
[in] 要绑定的列的最大精度。

nScale
[in] 要绑定的列的小数位数。

data
[in] 用户记录中的对应数据成员。

length
[in] 要绑定到列长度的变量。

status
[in] 要绑定到列变量的状态。

注解

允许您指定要绑定的列的精度和小数位数。 当您要支持长度和状态变量时,请使用此宏。 它在以下位置中使用:

COLUMN_ENTRY_PS_STATUS

表示行集上与数据库中的特定列的绑定。

语法

COLUMN_ENTRY_PS_STATUS(nOrdinal, nPrecision, nScale, data, status)

参数

请参阅“OLE DB 程序员参考”中的 DBBINDING

nOrdinal
[in] 列号。

nPrecision
[in] 要绑定的列的最大精度。

nScale
[in] 要绑定的列的小数位数。

data
[in] 用户记录中的对应数据成员。

status
[in] 要绑定到列变量的状态。

备注

允许您指定要绑定的列的精度和小数位数。 此宏支持 status 变量。 它在以下位置中使用:

COLUMN_ENTRY_STATUS

表示行集上与数据库中的特定列的绑定。

语法

COLUMN_ENTRY_STATUS(nOrdinal, data, status)

参数

请参阅“OLE DB 程序员参考”中的 DBBINDING

nOrdinal
[in] 列号。

data
[in] 用户记录中的对应数据成员。

status
[in] 要绑定到列变量的状态。

备注

此宏支持 status 变量。 它在以下位置中使用:

COLUMN_ENTRY_TYPE

表示与数据库中特定列的绑定。 支持 type 参数

语法

COLUMN_ENTRY_TYPE (nOrdinal, wType, data)

参数

nOrdinal
[in] 列号。

wType
[in] 列条目的数据类型。

data
[in] 用户记录中的对应数据成员。

注解

此宏是 COLUMN_ENTRY 宏的特殊变体,提供一种指定数据类型的方式。

COLUMN_ENTRY_TYPE_SIZE

表示与数据库中特定列的绑定。 支持 type 和 size 参数

语法

COLUMN_ENTRY_TYPE_SIZE(nOrdinal, wType, nLength, data)

参数

nOrdinal
[in] 列号。

wType
[in] 列条目的数据类型。

nLength
[in] 列条目的大小,以字节为单位。

data
[in] 用户记录中的对应数据成员。

注解

此宏是 COLUMN_ENTRY 宏的特殊变体,提供一种指定数据大小和类型的方式。

COLUMN_NAME

表示行集上与行集中的特定列的绑定。 与 COLUMN_ENTRY 类似,只不过此宏采用列名而不是列号。

语法

COLUMN_NAME(pszName, data)

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

data
[in] 用户记录中的对应数据成员。

注解

COLUMN_NAME_* 宏在与 COLUMN_ENTRY 相同的位置使用:

COLUMN_NAME_EX

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用数据类型、大小、精度、标度、列长度和列状态。

语法

COLUMN_NAME_EX(pszName, wType, nLength, nPrecision, nScale, data, length, status )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

wType
[in] 数据类型。

nLength
[in] 数据大小,以字节为单位。

nPrecision
[in] 获取数据和当 wType 为 DBTYPE_NUMERIC 时使用的最大精度。 否则会忽略此参数。

nScale
[in] 获取数据和当 wType 为 DBTYPE_NUMERICDBTYPE_DECIMAL 时使用的标度

data
[in] 用户记录中的对应数据成员。

length
[in] 要绑定到列长度的变量。

status
[in] 要绑定到列变量的状态。

备注

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_LENGTH

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用列长度。

语法

COLUMN_NAME_LENGTH(pszName, data, length)

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

data
[in] 用户记录中的对应数据成员。

length
[in] 要绑定到列长度的变量。

备注

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_LENGTH_STATUS

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用列长度和列状态。

语法

COLUMN_NAME_LENGTH_STATUS(pszName, data, length, status )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

data
[in] 用户记录中的对应数据成员。

length
[in] 要绑定到列长度的变量。

status
[in] 要绑定到列变量的状态。

备注

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_PS

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用精度和标度。

语法

COLUMN_NAME_PS(pszName, nPrecision, nScale, data )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

nPrecision
[in] 要绑定的列的最大精度。

nScale
[in] 要绑定的列的小数位数。

data
[in] 用户记录中的对应数据成员。

备注

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_PS_LENGTH

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用精度、标度和列长度。

语法

COLUMN_NAME_PS_LENGTH(pszName, nPrecision, nScale, data, length )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

nPrecision
[in] 要绑定的列的最大精度。

nScale
[in] 要绑定的列的小数位数。

data
[in] 用户记录中的对应数据成员。

length
[in] 要绑定到列长度的变量。

备注

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_PS_LENGTH_STATUS

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用精度、标度、列长度和列状态。

语法

COLUMN_NAME_PS_LENGTH_STATUS(pszName, nPrecision, nScale, data, length, status )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

nPrecision
[in] 要绑定的列的最大精度。

nScale
[in] 要绑定的列的小数位数。

data
[in] 用户记录中的对应数据成员。

length
[in] 要绑定到列长度的变量。

status
[in] 要绑定到列变量的状态。

注解

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_PS_STATUS

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用精度、标度和列状态。

语法

COLUMN_NAME_PS_STATUS(pszName, nPrecision, nScale, data, status )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

nPrecision
[in] 要绑定的列的最大精度。

nScale
[in] 要绑定的列的小数位数。

data
[in] 用户记录中的对应数据成员。

status
[in] 要绑定到列变量的状态。

注解

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_STATUS

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用列状态。

语法

COLUMN_NAME_STATUS(pszName, data, status )

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

data
[in] 用户记录中的对应数据成员。

status
[in] 要绑定到列变量的状态。

备注

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_TYPE

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用数据类型。

语法

COLUMN_NAME_TYPE(pszName, wType, data)

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

wType
[in] 数据类型。

data
[in] 用户记录中的对应数据成员。

备注

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_TYPE_PS

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用数据类型、精度和标度。

语法

COLUMN_NAME_TYPE_PS(pszName, wType, nPrecision, nScale, data)

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

wType
[in] 数据类型。

nPrecision
[in] 获取数据和当 wType 为 DBTYPE_NUMERIC 时使用的最大精度。 否则会忽略此参数。

nScale
[in] 获取数据和当 wType 为 DBTYPE_NUMERICDBTYPE_DECIMAL 时使用的标度

data
[in] 用户记录中的对应数据成员。

备注

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_TYPE_SIZE

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用数据类型和大小。

语法

COLUMN_NAME_TYPE_SIZE(pszName, wType, nLength, data)

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

wType
[in] 数据类型。

nLength
[in] 数据大小,以字节为单位。

data
[in] 用户记录中的对应数据成员。

注解

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

COLUMN_NAME_TYPE_STATUS

表示行集上与行集中的特定列的绑定。 与 COLUMN_NAME 类似,只不过此宏还采用数据类型和列状态。

语法

COLUMN_NAME_TYPE_STATUS(pszName, wType, status, data)

参数

pszName
[in] 指向列名的指针。 该名称必须是 Unicode 字符串。 可以通过在名称前面添加“L”来完成此操作,例如:L"MyColumn"

wType
[in] 数据类型。

status
[in] 要绑定到列变量的状态。

data
[in] 用户记录中的对应数据成员。

备注

有关在何处使用 COLUMN_NAME_* 宏的信息,请参阅 COLUMN_NAME

END_COLUMN_MAP

标记列映射条目的末尾。

语法

END_COLUMN_MAP()

备注

用于行集上的单个访问器。 BEGIN_COLUMN_MAP 宏与 END_COLUMN_MAP 宏一起完成。

示例

请参阅 BEGIN_COLUMN_MAP

DEFINE_COMMAND

指定在使用 CCommand 类时用于创建行集的命令。 仅接受与指定的应用程序类型(ANSI 或 Unicode)匹配的字符串类型。

注意

建议使用 DEFINE_COMMAND_EX 而不是 DEFINE_COMMAND。

语法

DEFINE_COMMAND(x, szCommand)

参数

x
[in] 用户记录(命令)类的名称。

szCommand
[in] 使用 CCommand 时用于创建行集的命令字符串。

备注

如果未在 CCommand::Open 方法中指定命令文本,指定的命令字符串将用作默认值。

如果将应用程序生成为 ANSI,则此宏接受 ANSI 字符串;如果将应用程序生成为 Unicode,则此宏接受 Unicode 字符串。 建议使用 DEFINE_COMMAND_EX 而不是 DEFINE_COMMAND,因为无论应用程序类型是 ANSI 还是 Unicode,前者都接受 Unicode 字符串。

示例

请参阅 BOOKMARK_ENTRY

DEFINE_COMMAND_EX

指定在使用 CCommand 类时用于创建行集的命令。 支持 Unicode 和 ANSI 应用程序。

语法

DEFINE_COMMAND_EX(x, wszCommand)

参数

x
[in] 用户记录(命令)类的名称。

wszCommand
[in] 使用 CCommand 时用于创建行集的命令字符串。

注解

如果未在 CCommand::Open 方法中指定命令文本,指定的命令字符串将用作默认值。

无论应用程序类型是什么,此宏都接受 Unicode 字符串。 请优先使用此宏而不是 DEFINE_COMMAND,因为它支持 Unicode 和 ANSI 应用程序。

示例

请参阅 BOOKMARK_ENTRY

BEGIN_PARAM_MAP

标记参数映射项的开始。

语法

BEGIN_PARAM_MAP(x)

参数

x
[in] 用户记录类的名称。

备注

参数由命令使用。

示例

请参阅 BEGIN_COLUMN_MAP 宏的示例。

END_PARAM_MAP

标记参数映射条目的末尾。

语法

END_PARAM_MAP()

示例

请参阅 BEGIN_PARAM_MAP 宏的示例。

SET_PARAM_TYPE

将 SET_PARAM_TYPE 宏后面的 COLUMN_ENTRY 宏指定为输入、输出或输入/输出。

语法

SET_PARAM_TYPE(type)

参数

type
[in] 要为参数设置的类型。

注解

提供程序仅支持基础数据源支持的参数输入/输出类型。 该类型是一个或多个 DBPARAMIO 值的组合(请参阅“OLE DB 程序员参考”中的 DBBINDING 结构

  • DBPARAMIO_NOTPARAM 访问器没有参数。 通常,你会在行访问器中将 eParamIO 设置为此值以提醒用户将忽略参数。

  • DBPARAMIO_INPUT 一个输入参数。

  • DBPARAMIO_OUTPUT 一个输出参数。

  • DBPARAMIO_INPUT | DBPARAMIO_OUTPUT 该参数既是输入参数又是输出参数。

示例

class CArtistsProperty
{
public:
   short m_nReturn;
   short m_nAge;
   TCHAR m_szFirstName[21];
   TCHAR m_szLastName[31];

BEGIN_PARAM_MAP(CArtistsProperty)
   SET_PARAM_TYPE(DBPARAMIO_OUTPUT)
   COLUMN_ENTRY(1, m_nReturn)
   SET_PARAM_TYPE(DBPARAMIO_INPUT)
   COLUMN_ENTRY(2, m_nAge)
END_PARAM_MAP()

BEGIN_COLUMN_MAP(CArtistsProperty)
   COLUMN_ENTRY(1, m_szFirstName)
   COLUMN_ENTRY(2, m_szLastName)
END_COLUMN_MAP()

   HRESULT OpenDataSource()
   {
      CDataSource _db;
      _db.Open();
      return m_session.Open(_db);
   }

   void CloseDataSource()
   {
      m_session.Close();
   }

   CSession m_session;

   DEFINE_COMMAND_EX(CArtistsProperty, L" \
      { ? = SELECT Age FROM Artists WHERE Age < ? }")
};

要求

标头: atldbcli.h

另请参阅

OLE DB 使用者模板的宏和全局函数
OLE DB 使用者模板
OLE DB 使用者模板参考