Struttura DBCOMMANDTREE (cmdtree.h)

Nota

Il servizio di indicizzazione non è più supportato a partire da Windows XP e non è disponibile per l'uso a partire da Windows 8. Usare invece Windows Search per la ricerca sul lato client e Microsoft Search Server Express per la ricerca sul lato server.

La struttura DBCOMMANDTREE è la struttura dei dati primaria usata per rappresentare qualsiasi nodo in un albero dei comandi OLE DB, come descritto nella sezione Operatori di manipolazione dati e operatori di definizione dei dati di questo riferimento. Questa struttura viene usata per ogni nodo DML (Data Manipulation Language) o Data Definition Language (DDL) in un albero dei comandi OLE DB.

Sintassi

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;

Members

op

Identificatore dell'operatore (2 byte)

Valore di tipo DBCOMMANDOP dall'enumerazione DBCOMMANDOPENUM . Specifica un operatore degli operatori di manipolazione dei dati o degli operatori di definizione dei dati che definisce l'operazione da eseguire nel campo associato.

wKind

Discriminazione per l'unione seguente (2 byte)

Valore di tipo DBVALUEKIND dal tipo DBVALUEKINDENUM enumerato. Definisce il tipo di dati del membro dell'unione associata in modo che il responsabile del comando sappia come interpretarlo.

pctFirstChild

Puntatore al primo figlio (4 byte)

Puntatore alla struttura DBCOMMANDTREE che rappresenta il primo figlio di questo nodo dell'albero dei comandi.

pctNextSibling

Puntatore a pari (4 byte)

Puntatore alla struttura DBCOMMANDTREE che rappresenta il figlio successivo di questo nodo dell'albero dei comandi.

value

Union rappresenta direttamente i campi che corrispondono a 8 byte. I commenti elencano DBVALUEKIND e DBTYPE corrispondenti a ogni campo.

Unione per contenere il valore per ogni tipo di dati supportato da questo provider OLE DB. Per qualsiasi tipo di dati membro dell'unione che contiene 8 byte o minore, il valore stesso viene archiviato qui. In caso contrario, llvalue è un membro pwszValue , un puntatore ai dati.

Un membro pwszValue è una stringa; la sua interpretazione viene lasciata al provider. In altre parole, il consumer deve comprendere il metodo di risoluzione dei nomi del provider. Per i componenti dei comandi "passati" a un altro provider, viene lasciato al provider di ricezione per interpretare la stringa.

Il membro pMoniker viene usato per oggetti collegati non risolti, in particolare tabelle e funzioni.

Il membro pRowset viene usato per fare riferimento a un set di righe attualmente aperto come input per un comando. La maggior parte dei provider avrà esito negativo se viene richiamato un metodo IPersist mentre l'albero dei comandi fa riferimento a un set di righe aperto.

Il membro pCommand fa riferimento a un altro oggetto comando come input per un comando. La maggior parte dei provider avrà esito negativo se viene richiamato un metodo IPersist mentre l'albero dei comandi fa riferimento a un oggetto comando che non supporta i moniker.

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

un DBVALUEKIND_BYREF generico

value.pdbprobValue

DBVALUEKIND_PROBABILISTIC

value.pdbreldocValue

DBVALUEKIND_RELEVANTDOCUMENT

hrError

Indicatore di errore, dettagli nelle informazioni sugli errori estesi (4 byte)

Commenti

Molte operazioni creano un ambiente di associazione. Ad esempio, un'operazione di DBOP_select include due input, una tabella e un predicato booleano. Per altre informazioni su questa operazione, vedere Operatori con due varianti per tabelle ordinate e non ordinate. A causa dell'operazione "select", la tabella diventa l'ambiente di associazione per il predicato. Ciò significa che il predicato può fare riferimento liberamente ai nomi di colonna definiti nella tabella. Si noti che non tutte le associazioni devono venire dall'operazione di tabella più vicina. Ad esempio, potrebbero essere presenti più operazioni di tabella all'interno di un'espressione "exist" e qualsiasi predicato può fare riferimento a una colonna definita all'esterno dell'espressione "exist". In SQL viene chiamato "sottoquery correlato".

Le dimensioni tipiche di una struttura DBCOMMANDTREE per un nodo sono 24 byte. Tuttavia, gli operatori possono archiviare alcune informazioni specifiche nel campo valore del nodo. Per praticità di programmazione, il campo unione include rami che rappresentano alcuni tipi comuni che possono adattarsi all'interno di 8 byte. I tipi a lunghezza variabile vengono a cui viene fatto riferimento tramite un puntatore alla struttura corrispondente , ad esempio DBTEXT. La discriminazione per l'unione è di tipo WORD anziché DBVALUEKIND in modo che sia possibile archiviare i valori dei nodi, ad esempio DBVALUEKIND_VECTOR | DBVALUEKIND_GUID, DBVALUEKIND_BYREF | DBVALUEKIND_UI4 o DBVALUEKIND_SAFEARRAY | DBVALUEKIND_I4.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione cmdtree.h