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 类