注意
从 Windows XP 开始,索引服务不再受支持,并且自Windows 8起无法使用。 请改用 Windows 搜索 进行客户端搜索,使用 Microsoft Search Server Express 进行服务器端搜索。
DBCOMMANDTREE 结构是用于表示 OLE DB 命令树中任何节点的主数据结构,如本参考的数据操作运算符和数据定义运算符部分所述。 此结构用于 OLE DB 命令树中 DDL) 节点 ( (DML) 或数据定义语言 (数据操作语言。
语法
typedef struct tagDBCOMMANDTREE {
DBCOMMANDOP op;
WORD wKind;
struct tagDBCOMMANDTREE *pctFirstChild;
struct tagDBCOMMANDTREE *pctNextSibling;
union {
__int64 llValue;
unsigned __int64 ullValue;
BOOL fValue;
unsigned char uchValue;
signed char schValue;
unsigned short usValue;
short sValue;
LPOLESTR pwszValue;
LONG lValue;
ULONG ulValue;
float flValue;
double dblValue;
CY cyValue;
DATE dateValue;
DBDATE dbdateValue;
DBTIME dbtimeValue;
SCODE scodeValue;
BSTR *pbstrValue;
ICommand *pCommand;
IDispatch *pDispatch;
IMoniker *pMoniker;
IRowset *pRowset;
IUnknown *pUnknown;
DBBYGUID *pdbbygdValue;
DBCOLUMNDESC *pcoldescValue;
DBID *pdbidValue;
DBLIKE *pdblikeValue;
DBCONTENT *pdbcntntValue;
DBCONTENTSCOPE *pdbcntntscpValue;
DBCONTENTTABLE *pdbcntnttblValue;
DBCONTENTVECTOR *pdbcntntvcValue;
DBCONTENTPROXIMITY *pdbcntntproxValue;
DBGROUPINFO *pdbgrpinfValue;
DBPARAMETER *pdbparamValue;
DBPROPSET *pdbpropValue;
DBSETFUNC *pdbstfncValue;
DBSORTINFO *pdbsrtinfValue;
DBTEXT *pdbtxtValue;
DBVECTOR *pdbvectorValue;
SAFEARRAY *parrayValue;
VARIANT *pvarValue;
GUID *pGuid;
BYTE *pbValue;
char *pzValue;
DB_NUMERIC *pdbnValue;
DBTIMESTAMP *pdbtsValue;
void *pvValue;
DBPROBABILISTIC *pdbprobValue;
DBRELEVANTDOCUMENT *pdbreldocValue;
} value;
HRESULT hrError;
} DBCOMMANDTREE;
成员
op
运算符标识符 (2 个字节)
DBCOMMANDOPENUM 枚举中的 DBCOMMANDOP 类型的值。 它指定 数据操作运算符 或数据定义运算符中的运算符,用于定义要在关联字段上执行的操作。
wKind
以下联合的鉴别器 (2 个字节)
DBVALUEKINDENUM 枚举类型的 DBVALUEKIND 类型的值。 它定义关联的联合成员的数据类型,以便命令处理器知道如何解释它。
pctFirstChild
指向第一个子 (4 个字节) 的指针
指向 DBCOMMANDTREE 结构的指针,该结构表示此命令树节点的第一个子级。
pctNextSibling
指向同级 (4 个字节) 的指针
指向 DBCOMMANDTREE 结构的指针,该结构表示命令树节点的下一个子级。
value
联合直接表示 8 个字节以内的字段。 注释列出对应于每个字段的 DBVALUEKIND 和 DBTYPE。
用于保存此 OLE DB 访问接口支持的每个数据类型的值的联合。 对于包含 8 个字节或更少的任何联合成员数据类型,值本身存储在此处。 否则, llvalue 是 pwszValue 成员,是指向数据的指针。
pwszValue 成员是字符串;其解释留给提供程序。 换句话说,使用者必须了解提供程序的名称解析方法。 对于“传递”到另一个提供程序的命令组件,由接收提供程序来解释字符串。
pMoniker 成员用于未解析的链接对象,尤其是表和函数。
pRowset 成员用于引用当前打开的行集作为命令的输入。 如果在命令树引用打开的行集时调用 IPersist 方法,则大多数提供程序将失败。
pCommand 成员引用另一个命令对象作为命令的输入。 如果在命令树引用不支持名字对象的命令对象时调用 IPersist 方法,则大多数提供程序都将失败。
value.llValue
DBVALUEKIND_I8 (DBTYPE_I8)
value.ullValue
DBVALUEKIND_UI8 (DBTYPE_UI8)
value.fValue
DBVALUEKIND_BOOL (DBTYPE_BOOL)
value.uchValue
DBVALUEKIND_UI1 (DBTYPE_UI1)
value.schValue
DBVALUEKIND_I1 (DBTYPE_I1)
value.usValue
DBVALUEKIND_UI2 (DBTYPE_UI2)
value.sValue
DBVALUEKIND_I2 (DBTYPE_I2)
value.pwszValue
DBVALUEKIND_WSTR (DBTYPE_WSTR)
value.lValue
DBVALUEKIND_I4 (DBTYPE_I4)
value.ulValue
DBVALUEKIND_UI4 (DBTYPE_UI4)
value.flValue
DBVALUEKIND_R4 (DBTYPE_R4)
value.dblValue
DBVALUEKIND_R8 (DBTYPE_R8)
value.cyValue
DBVALUEKIND_CY (DBTYPE_CY)
value.dateValue
DBVALUEKIND_DATE (DBTYPE_DATE)
value.dbdateValue
DBVALUEKIND_DBDATE (DBTYPE_DBDATE)
value.dbtimeValue
DBVALUEKIND_DBTIME (DBTYPE_DBTIME)
value.scodeValue
DBVALUEKIND_ERROR (DBTYPE_ERROR)
value.pbstrValue
DBVALUEKIND_BSTR (DBTYPE_BSTR)
value.pCommand
DBVALUEKIND_COMMAND (DBTYPE_IUNKNOWN)
value.pDispatch
DBVALUEKIND_IDISPATCH (DBTYPE_IDISPATCH)
value.pMoniker
DBVALUEKIND_MONIKER (DBTYPE_MONIKER)
value.pRowset
DBVALUEKIND_ROWSET (DBTYPE_ROWSET)
value.pUnknown
DBVALUEKIND_IUNKNOWN (DBTYPE_IUNKNOWN)
value.pdbbygdValue
DBVALUEKIND_BYGUID
value.pcoldescValue
DBVALUEKIND_COLDESC
value.pdbidValue
DBVALUEKIND_ID
value.pdblikeValue
DBVALUEKIND_LIKE
value.pdbcntntValue
DBVALUEKIND_CONTENT
value.pdbcntntscpValue
DBVALUEKIND_CONTENTSCOPE
value.pdbcntnttblValue
DBVALUEKIND_CONTENTTABLE
value.pdbcntntvcValue
DBVALUEKIND_CONTENTVECTOR
value.pdbcntntproxValue
DBVALUEKIND_CONTENTPROXIMITY
value.pdbgrpinfValue
DBVALUEKIND_GROUPINFO
value.pdbparamValue
DBVALUEKIND_PARAMETER
value.pdbpropValue
DBVALUEKIND_PROPERTY
value.pdbstfncValue
DBVALUEKIND_SETFUNC
value.pdbsrtinfValue
DBVALUEKIND_SORTINFO
value.pdbtxtValue
DBVALUEKIND_TEXT
value.pdbvectorValue
DBVALUEKIND_VECTOR |*
value.parrayValue
DBVALUEKIND_ARRAY |*
value.pvarValue
DBVALUEKIND_VARIANT (DBTYPE_VARIANT)
value.pGuid
DBVALUEKIND_GUID (DBTYPE_GUID)
value.pbValue
DBVALUEKIND_BYTES (DBTYPE_BYTES)
value.pzValue
DBVALUEKIND_STR (DBTYPE_STR)
value.pdbnValue
DBVALUEKIND_NUMERIC (DBTYPE_NUMERIC)
value.pdbtsValue
DBVALUEKIND_DBTIMESTAMP (DBTYPE_DBTIMESTAMP)
value.pvValue
泛型DBVALUEKIND_BYREF
value.pdbprobValue
DBVALUEKIND_PROBABILISTIC
value.pdbreldocValue
DBVALUEKIND_RELEVANTDOCUMENT
hrError
错误指示器,扩展错误信息中的详细信息 (4 个字节)
注解
许多操作会创建绑定环境。 例如,DBOP_select运算有两个输入 - 一个表和一个布尔谓词。 (有关此操作的详细信息,请参阅有序 表和非有序表具有两个变体的运算符。) 通过“选择”操作,表将成为谓词的绑定环境。 这意味着谓词可以自由引用表中定义的列名。 请注意,并非所有绑定都必须来自最近的表操作。 例如,“存在”表达式中可能存在多个表操作,并且任何谓词都可以引用在“存在”表达式外部定义的列。 (在 SQL 中,这称为“相关子查询”。)
节点的 DBCOMMANDTREE 结构的典型大小为 24 字节。 但是,运算符可能会在节点的值字段中存储一些特定信息。 为方便编程,联合字段包括表示一些常见类型的分支,这些类型可以容纳在 8 个字节以内。 可变长度类型通过指向相应结构 ((如 DBTEXT) )的指针进行引用。 联合的鉴别器的类型为 WORD 而不是 DBVALUEKIND ,因此可以存储节点值,例如 DBVALUEKIND_VECTOR |DBVALUEKIND_GUID、DBVALUEKIND_BYREF |DBVALUEKIND_UI4或DBVALUEKIND_SAFEARRAY |DBVALUEKIND_I4。
要求
| 要求 | 值 |
|---|---|
| 最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
| 最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
| 标头 | cmdtree.h |