Command States

Commands can be in one of four states:

The following table lists each state and shows the code returned by each method in a command interface when it is called in that state. This table uses the following abbreviations:

OK= S_OK
NC= DB_E_NOCOMMAND
NP= DB_E_NOTPREPARED
OO= DB_E_OPENOBJECT

Method Initial Unprepared Prepared Executed
IColumnsInfo
GetColumnInfo NC OK (ICommandPrepare is not supported)

- or -

NP (ICommandPrepare is supported)

OK OK

(ICommandPrepare is not supported)

- or -

NP (ICommandPrepare is supported)

MapColumnIDs NC OK (ICommandPrepare is not supported)

- or -

NP (ICommandPrepare is supported)

OK OK

(ICommandPrepare is not supported)

- or -

NP (ICommandPrepare is supported)

IColumnsRowset
GetAvailableColumns NC OK (ICommandPrepare is not supported)

- or -

NP (ICommandPrepare is supported)

OK OK

(ICommandPrepare is not supported)

- or -

NP (ICommandPrepare is supported)

GetColumnsRowset NC OK (ICommandPrepare is not supported)

- or -

NP (ICommandPrepare is supported)

OK OK

(ICommandPrepare is not supported)

- or -

NP (ICommandPrepare is supported)

ICommand
Cancel OK OK OK OK
Execute NC OK OK OK
GetDBSession OK OK OK OK
ICommandPrepare
Prepare NC OK OK OK (Execute did not create a rowset)

- or -

OO (Execute created a rowset, and the rowset is still open)

Unprepare OK OK OK OK (Execute did not create a rowset)

- or -

OO (Execute created a rowset, and the rowset is still open)

ICommandProperties
GetProperties OK OK OK OK
SetProperties OK OK OK OK (Execute did not create a rowset)

- or -

OO (Execute created a rowset, and the rowset is still open)

ICommandText
GetCommandText NC OK OK OK
SetCommandText OK OK OK OK (Execute did not create a rowset)

- or -

OO (Execute created a rowset, and the rowset is still open)

ICommandWithParameters
GetParameterInfo OK (SetParameterInfo has been called)

- or -

NC (SetParameterInfo has not been called)

OK (SetParameterInfo has been called)

- or -

NP (ICommandPrepare is supported and SetParameterInfo has not been called)

OK OK
MapParameterNames OK (SetParameterInfo has been called)

- or -

NC (SetParameterInfo has not been called)

OK (SetParameterInfo has been called)

- or -

NP (ICommandPrepare is supported and SetParameterInfo has not been called)

OK OK
SetParameterInfo OK OK OK OK (Execute did not create a rowset)

- or -

OO (Execute created a rowset, and the rowset is still open)


The following figures illustrate the state transitions for a command. The first shows the command text set to an empty string, the second to a nonempty string.

Command text set to an empty string, then a nonempty string