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_MAP 与 END_COLUMN_MAP 宏之间。
在 BEGIN_ACCESSOR 与 END_ACCESSOR 宏之间。
在 BEGIN_PARAM_MAP 与 END_PARAM_MAP 宏之间。
示例
请参阅宏主题 BEGIN_COLUMN_MAP 和 BEGIN_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_NUMERIC
或 DBTYPE_DECIMAL
时使用的标度。
data
[in] 用户记录中的对应数据成员。
length
[in] 要绑定到列长度的变量。
status
[in] 要绑定到列变量的状态。
注解
COLUMN_ENTRY_EX 宏在以下位置使用:
在 BEGIN_COLUMN_MAP 与 END_COLUMN_MAP 宏之间。
在 BEGIN_ACCESSOR 与 END_ACCESSOR 宏之间。
在 BEGIN_PARAM_MAP 与 END_PARAM_MAP 宏之间。
示例
请参阅 BOOKMARK_ENTRY。
COLUMN_ENTRY_LENGTH
表示行集上与数据库中的特定列的绑定。
语法
COLUMN_ENTRY_LENGTH(nOrdinal, data, length)
参数
请参阅“OLE DB 程序员参考”中的 DBBINDING。
nOrdinal
[in] 列号,从 1 开始。 书签对应于第 0 列。
data
[in] 用户记录中的对应数据成员。
length
[in] 要绑定到列长度的变量。
备注
此宏支持 length 变量。 它在以下位置中使用:
在 BEGIN_COLUMN_MAP 与 END_COLUMN_MAP 宏之间。
在 BEGIN_ACCESSOR 与 END_ACCESSOR 宏之间。
在 BEGIN_PARAM_MAP 与 END_PARAM_MAP 宏之间。
COLUMN_ENTRY_LENGTH_STATUS
表示行集上与数据库中的特定列的绑定。
语法
COLUMN_ENTRY_LENGTH_STATUS(nOrdinal, data, length, status)
参数
请参阅“OLE DB 程序员参考”中的 DBBINDING。
nOrdinal
[in] 列号。
data
[in] 用户记录中的对应数据成员。
length
[in] 要绑定到列长度的变量。
status
[in] 要绑定到列变量的状态。
备注
当您要支持长度和状态变量时,请使用此宏。 它在以下位置中使用:
在 BEGIN_COLUMN_MAP 与 END_COLUMN_MAP 宏之间。
在 BEGIN_ACCESSOR 与 END_ACCESSOR 宏之间。
在 BEGIN_PARAM_MAP 与 END_PARAM_MAP 宏之间。
COLUMN_ENTRY_PS
表示行集上与行集中的特定列的绑定。
语法
COLUMN_ENTRY_PS(nOrdinal, nPrecision, nScale, data)
参数
请参阅“OLE DB 程序员参考”中的 DBBINDING。
nOrdinal
[in] 列号。
nPrecision
[in] 要绑定的列的最大精度。
nScale
[in] 要绑定的列的小数位数。
data
[in] 用户记录中的对应数据成员。
注解
允许您指定要绑定的列的精度和小数位数。 它在以下位置中使用:
在 BEGIN_COLUMN_MAP 与 END_COLUMN_MAP 宏之间。
在 BEGIN_ACCESSOR 与 END_ACCESSOR 宏之间。
在 BEGIN_PARAM_MAP 与 END_PARAM_MAP 宏之间。
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 变量。 它在以下位置中使用:
在 BEGIN_COLUMN_MAP 与 END_COLUMN_MAP 宏之间。
在 BEGIN_ACCESSOR 与 END_ACCESSOR 宏之间。
在 BEGIN_PARAM_MAP 与 END_PARAM_MAP 宏之间。
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] 要绑定到列变量的状态。
备注
允许您指定要绑定的列的精度和小数位数。 当您要支持长度和状态变量时,请使用此宏。 它在以下位置中使用:
在 BEGIN_COLUMN_MAP 与 END_COLUMN_MAP 宏之间。
在 BEGIN_ACCESSOR 与 END_ACCESSOR 宏之间。
在 BEGIN_PARAM_MAP 与 END_PARAM_MAP 宏之间。
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 变量。 它在以下位置中使用:
在 BEGIN_COLUMN_MAP 与 END_COLUMN_MAP 宏之间。
在 BEGIN_ACCESSOR 与 END_ACCESSOR 宏之间。
在 BEGIN_PARAM_MAP 与 END_PARAM_MAP 宏之间。
COLUMN_ENTRY_STATUS
表示行集上与数据库中的特定列的绑定。
语法
COLUMN_ENTRY_STATUS(nOrdinal, data, status)
参数
请参阅“OLE DB 程序员参考”中的 DBBINDING。
nOrdinal
[in] 列号。
data
[in] 用户记录中的对应数据成员。
status
[in] 要绑定到列变量的状态。
备注
此宏支持 status 变量。 它在以下位置中使用:
在 BEGIN_COLUMN_MAP 与 END_COLUMN_MAP 宏之间。
在 BEGIN_ACCESSOR 与 END_ACCESSOR 宏之间。
在 BEGIN_PARAM_MAP 与 END_PARAM_MAP 宏之间。
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 相同的位置使用:
在 BEGIN_COLUMN_MAP 与 END_COLUMN_MAP 宏之间。
在 BEGIN_ACCESSOR 与 END_ACCESSOR 宏之间。
在 BEGIN_PARAM_MAP 与 END_PARAM_MAP 宏之间。
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_NUMERIC
或 DBTYPE_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_NUMERIC
或 DBTYPE_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