通过


dbCOMMANDTREE 结构 (cmdtree.h)

注意

从 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 个字节或更少的任何联合成员数据类型,值本身存储在此处。 否则, llvaluepwszValue 成员,是指向数据的指针。

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