CDynamicStringAccessor 类

使您可以在不知道数据库架构(数据库的基础结构)的情况下访问数据源。

语法

template< typename BaseType, DBTYPEENUM OleDbType >
class CDynamicStringAccessorT : public CDynamicAccessor

要求

标头: atldbcli.h

成员

方法

名称 描述
GetString 将指定列数据作为字符串检索。
SetString 将指定列数据设置为字符串。

备注

CDynamicAccessor 请求提供程序报告的本机格式的数据时,CDynamicStringAccessor 将请求提供程序将从数据源访问的所有数据作为字符串数据提取。 这对于不需要计算数据存储中的值的简单任务特别有用,例如显示或打印数据存储的内容。

数据存储中列数据的本机类型并不重要;只要提供程序可支持数据转换,它就将提供字符串格式的数据。 如果提供程序不支持从本机数据类型转换为字符串(不是公共的),则请求调用将返回成功值 DB_S_ERRORSOCCURED,并且相应列的状态将使用 DBSTATUS_E_CANTCONVERTVALUE 指示转换问题。

使用 CDynamicStringAccessor 方法获取列信息。 使用此列信息在运行时动态创建访问器。

列信息存储在由此类创建和管理的缓冲区中。 使用 GetString 从缓冲区获取数据,或使用 SetString 将其存储到缓冲区。

有关使用动态访问器类的讨论和示例,请参阅使用动态访问器

CDynamicStringAccessor::GetString

将指定列数据作为字符串检索。

语法

BaseType* GetString(DBORDINAL nColumn) const throw();

BaseType* GetString(const CHAR* pColumnName) const throw();

BaseType* GetString(const WCHAR* pColumnName) const throw();

参数

nColumn
[in] 列号。 列数从 1 开始。 值 0 是指书签列(如果有)。

pColumnName
[in] 指向包含列名的字符串的指针。

返回值

指向从指定列检索到的字符串值的指针。 该值属于类型 BaseType,是 CHAR 还是 WCHAR,具体取决于是否定义了 _UNICODE。 如果未找到指定的列,则返回 NULL。

备注

第二个重写窗体采用列名作为 ANSI 字符串。 第三个重写窗体采用列名作为 Unicode 字符串。

CDynamicStringAccessor::SetString

将指定列数据设置为字符串。

语法

HRESULT SetString(DBORDINAL nColumn,
   BaseType* data) throw();

HRESULT SetString(const CHAR* pColumnName,
   BaseType* data) throw();

HRESULT SetString(const WCHAR* pColumnName,
   BaseType* data) throw();

参数

nColumn
[in] 列号。 列数从 1 开始。 特殊值 0 是指书签列(如果有)。

pColumnName
[in] 指向包含列名的字符串的指针。

data
[in] 指向要写入指定列的字符串数据的指针。

返回值

指向要设置指定列的字符串值的指针。 该值属于类型 BaseType,是 CHAR 还是 WCHAR,具体取决于是否定义了 _UNICODE。

注解

第二个重写窗体采用列名作为 ANSI 字符串,第三个重写窗体采用列名作为 Unicode 字符串。

如果 _SECURE_ATL 定义为具有非零值,则当输入数据字符串超过所引用数据列的最大允许长度,将生成运行时断言失败。 否则,如果输入字符串超过允许的最大长度,则将被截断。

另请参阅

OLE DB 使用者模板
OLE DB 使用者模板参考
CAccessor 类
CDynamicParameterAccessor 类
CManualAccessor 类
CDynamicAccessor 类
CDynamicStringAccessorA 类
CDynamicStringAccessorW 类
CXMLAccessor 类