The DBPROPSET_ROWSET property set contains the following properties. All of these properties are in the ROWSET property group. Additional properties are defined in DBPROPSET_JETOLEDB_ROWSET.
Property ID |
Description |
DBPROP_ABORTPRESERVE |
Type: VT_BOOL
Typical R/W: R Only
Description: Preserve on Abort
Specifies values as either of:
-
VARIANT_TRUE, which indicates that, after an abort that preserves, the rowset remains active. Therefore, it is possible to manipulate rows.
-
VARIANT_FALSE, which indicates that, after an abort, or an abort that preserves, the only operations allowed on a rowset are to release row and accessor handles and to release the rowset.
|
DBPROP_APPENDONLY |
Type: VT_BOOL
Typical R/W: R/W
Description: Append-Only Rowset
If the value is VARIANT_TRUE, when a rowset is opened it will initially be empty. If the rowset was obtained by IOpenRowset::OpenRowset, this is equivalent to positioning the start of the rowset at the end of the table. If the rowset was obtained by executing a command, this is equivalent to placing the start of the rowset at the end of the command’s results. A rowset opened with VARIANT_TRUE will be populated only by those rows inserted in it.
DBPROP_APPENDONLY set to VARIANT_TRUE implies:
-
DBPROP_IrowsetChange is VARIANT_TRUE.
-
DBPROP_OWNINSERT is VARIANT_TRUE
-
DBPROP_UPDATABILITY has the flag DBPROPVAL_UP_INSERT set.
-
DBPROP_OTHERINSERT is VARIANT_TRUE.
|
DBPROP_BLOCKINGSTORAGEOBJECTS |
Type: VT_BOOL
Typical R/W: R Only
Description: Blocking Storage Objects
Specifies whether storage objects might prevent use of other methods on the rowset, that is:
-
VARIANT_TRUE, which indicates that, after creating an instance of a storage object, use of other methods on the rowset might be prevented. That is, after a storage object is created and before it is released, methods other than those on the storage objects might return E_UNEXPECTED.
-
VARIANT_FALSE, which indicates that creating instances of storage objects does not prevent the use of other methods.
|
DBPROP_BOOKMARKS |
Type: VT_BOOL
Typical R/W: R/W
Description: Use Bookmarks
Specifies whether the rowset supports bookmarks, that is:
-
VARIANT_TRUE, which indicates that the rowset supports bookmarks. Column 0 is the bookmark for the rows. Getting this column obtains a bookmark value, which can be used to reposition to the row.
-
VARIANT_FALSE, which indicates that the rowset does not support bookmarks. The rowset is sequential and the values of the DBPROP_LITERALBOOKMARKS and DBPROP_ORDEREDBOOKMARKS properties are ignored.
The value of this property is automatically set to VARIANT_TRUE if the value of DBPROP_IROWSETLOCATE, DBPROP_LITERALBOOKMARKS, or DBPROP_ORDEREDBOOKMARKS is set to VARIANT_TRUE
|
DBPROP_BOOKMARKSKIPPED |
Type: VT_BOOL
Typical R/W: R Only
Description: Skip Deleted Bookmarks
Specifies whether the rowset allows IRowsetLocate::GetRowsAt or IRowsetFind::FindNextRow to continue if a bookmark row was deleted, is a row to which the consumer does not have access rights, or is no longer a member of the rowset.
Specifies values as either of:
-
VARIANT_TRUE, which indicates that GetRowsAt or FindNextRow skips the bookmark row and continues with the next row.
-
VARIANT_FALSE, which indicates that GetRowsAt or FindNextRow returns DB_E_BADBOOKMARK
|
DBPROP_BOOKMARKTYPE |
Type: VT_I4
Typical R/W: R Only
Description: BookMark Type
Specifies the bookmark type supported by the rowset, that is:
-
DBPROPVAL_BMK_NUMERIC, which indicates that the bookmark type is numeric. Numeric bookmarks are based on a row's properties that are not dependent on the values of the row’s columns. For instance, a numeric bookmark can be based on the absolute position of the row within rowset, or on a row ID that the storage engine assigned to a tuple when it was created. The validity of numeric bookmarks is not changed by modifying the row’s columns.
-
DBPROPVAL_BMK_KEY, which indicates that the bookmark type is key. Key bookmarks are based on the values of one or more of the row’s columns.These values form a unique key for each row. A key bookmark may be left dangling if the key values of the corresponding row are changed.
|
DBPROP_CACHEDEFERRED |
Type: VT_BOOL
Typical R/W: R Only
Description: Cache Deferred Columns
Specifies values as either of:
-
VARIANT_TRUE, which indicates that the provider caches the value of a deferred column when the consumer first gets a value from this column. When the consumer later gets values from this column, the provider returns the value in the cache. The contents of the cache can be overwritten by IRowsetChange::SetData or IRowsetResynch::ResynchRows. The cached value is released when the row is released. Consumers should set the value of this property to VARIANT_TRUE only when this is absolutely necessary, as this might require a large amount of memory in the provider. This could limit the number of rows that can be held at one time. Setting the values of this property to VARIANT_TRUE automatically sets the DBPROP_DEFERRED property to VARIANT_TRUE.
-
VARIANT_FALSE, which indicates that the provider does not cache the value of a deferred column and multiple calls to IRowset::GetData as the column can return different values.
|
DBPROP_CANFETCHBACKWARDS |
Type: VT_BOOL
Typical R/W: R/W
Description: Fetch Backwards
Specifies whether the rowset can fetch backwards, that is:
-
VARIANT_TRUE, which indicates that cRows in IRowset::GetNextRows, IRowsetLocate::GetRowsAt, and IRowsetScroll::GetRowsAtRatio can be negative. When it is negative, these methods fetch rows backwards from the specified row.
-
VARIANT_FALSE, which indicates that cRows must be non-negative.
|
DBPROP_CANHOLDROWS |
Type: VT_BOOL
Typical R/W: R/W
Description: Hold Rows
Specifies values as either of:
-
VARIANT_TRUE, which indicates that the rowset allows the consumer to retrieve more rows, or change the next fetch position, while holding previously fetched rows with pending changes.
-
VARIANT_FALSE, which indicates that the rowset requires pending changes to be transmitted to the data source and all rows to be released before fetching additional rows, inserting new rows, or changing the next fetch position.
|
DBPROP_CANSCROLLBACKWARDS |
Type: VT_BOOL
Typical R/W: R/W
Description: Scroll Backwards
Specifies whether the rowset can scroll backward, that is:
-
VARIANT_TRUE, which indicates that IRowsOffset in IRowset::GetNextRows or IRowsetLocate::GetRowsAt can be negative.
-
VARIANT_FALSE, which indicates that IRowsOffset must be non-negative.
If the rowset supports IRowsetLocate, the value of this property is VARIANT_TRUE, as this method supports backward scrolling by definition.
|
DBPROP_CHANGEINSERTEDROWS |
Type: VT_BOOL
Typical R/W: R/W
Description: Change Inserted Rows
Specifies values as either of:
-
VARIANT_TRUE, which indicates that the consumer can call IRowsetChange::DeleteRows or IRowsetChange::SetData for newly inserted rows.
-
VARIANT_FALSE, which indicates whether the consumer calls DeleteRows or SetData for newly inserted rows. DeleteRows returns a status of DBROWSTATUS_E_NEWLYINSERTED for the row and SetData returns DB_E_NEWLYINSERTED.
A newly inserted row is defined as a row for which the insertion has been transmitted to the data source, as opposed to a pending insert row.
|
DBPROP_COLUMNRESTRICT |
Type: VT_BOOL
Typical R/W: R Only
Description: Column Privileges
Specifies values as either of:
-
VARIANT_TRUE, which indicats that access rights are restricted on a column-by-column basis. If the rowset exposes IRowsetChange, IRowsetChange::SetData cannot be called for at least one column. A provider must not execute a query that would specify a column for which the consumer has no read access rights.
-
VARIANT_FALSE, which indicates that access rights are not restricted on a column-by-column basis. If the rowset exposes IRowsetChange, SetData can be called for any column in the rowset.
If access is restricted both by row and by column, individual columns of particular rows might have their own stricter access rights, and the consumer may not be permitted to read such columns. The column values will be null. If a null value is contrary to schema rules (Nulls not permitted) then the rowset should not count or return any rows that would have this condition.
|
DBPROP_COMMANDTIMEOUT |
Type: VT_I4
Typical R/W: Not Supported
Description: Command Time-out
Specifies the number of seconds before a command times out. A value of 0 indicates an infinite time-out.
|
DBPROP_COMMITPRESERVE |
Type: VT_BOOL
Typical R/W: R Only
Description: Preserve On Commit
Specifies values as either of:
-
VARIANT_TRUE, which indicates that after a commit that preserves, the rowset remains active. That is, it is possible to fetch new rows, update, delete, and insert rows, and so on.
-
VARIANT_FALSE, which indicates that after a commit or a commit that preserves, the only operations allowed on a rowset are to release row and accessor handles and to release the rowset.
|
DBPROP_DEFERRED |
Type: VT_BOOL
Typical R/W: R Only
Description: Defer Column
Specifies values as either of:
-
VARIANT_TRUE, which indicates that the data in the column is not fetched until an accessor is used on the column.
-
VARIANT_FALSE, which indicates that the data in the column is fetched when the row containing it is fetched.
The value of this property is automatically set to VARIANT_TRUE if the value of the DBPROP_CACHEDEFERRED property is set to VARIANT_TRUE.
|
DBPROP_DELAYSTORAGEOBJECTS |
Type: VT_BOOL
Typical R/W: R Only
Description: Delay Storage Object Updates
In delayed update mode, if the value of this property is VARIANT_TRUE, then storage objects are also used in delayed update mode. In particular:
-
Changes to the object are not transmitted to the data source until IRowsetUpdate::Update is called.
-
IRowsetUpdate::Undo undoes any pending changes, and IRowsetUpdate::GetOriginalData retrieves the original value of the object; that is, the object’s value when the row was last fetched or updated and excluding any changes made since then.
In delayed update mode, if the value of this property is VARIANT_FALSE, then storage objects are used in immediate update mode. In particular:
-
Changes to the object are immediately transmitted to the data source,
-
Update has no effect on the object.
-
Undo does not undo changes made to the object since the row was last fetched or updated, and GetOriginalData retrieves the current value of the object, including changes made since the row was last fetched or updated.
In immediate update mode, this property has no effect on storage objects.
|
DBPROP_IACCESSOR
DBPROP_ICOLUMNSINFO
DBPROP_ICOLUMNSROWSET
DBPROP_ICONNECTIONPOINTCONTAINER
DBPROP_ICONVERTTYPE
DBPROP_IROWSET
DBPROP_IROWSETCHANGE
DBPROP_IROWSETIDENTITY
DBPROP_IROWSETINFO
DBPROP_IROWSETLOCATE
DBPROP_IROWSETRESYNCH
DBPROP_IROWSETSCROLL
DBPROP_IROWSETUPDATE
DBPROP_ISUPPORTERRORINFO
|
Type: VT_BOOL
Typical R/W: R/W, except as noted below.
Description: IAccessor
IColumnsInfo
IColumnsRowset
IConnectionPointContainer
IConvertType
IRowset
IRowsetChange
IRowsetIdentity
IRowsetInfo
IRowsetLocate
IRowsetResynch
IRowsetScroll
IRowsetUpdate
ISupportErrorInfo
If the value of any of these properties is set to VARIANT_TRUE, the rowset supports the specified interface. These properties are primarily used to request interfaces through ICommandProperties::SetProperties.
The values of the DBPROP_IROWSET, DBPROP_IACCESSOR, and DBPROP_IROWSETINFO properties are read-only and are always VARIANT_TRUE. They cannot be set to VARIANT_FALSE. If the consumer does not set the value of any of these properties to true, the resulting rowset supports IRowset, IAccessor, IColumnsInfo, IConvertType, and IRowsetInfo.
Setting DBPROP_IROWSETLOCATE to VARIANT_TRUE automatically sets DBPROP_BOOKMARKS to VARIANT_TRUE. Setting DBPROP_IROWSETUPDATE to VARIANT_TRUE automatically sets DBPROP_IROWSETCHANGE to VARIANT_TRUE.
|
DBPROP_ILOCKBYTES
DBPROP_ISEQUENTIALSTREAM
DBPROP_ISTORAGE
DBPROP_ISTREAM
|
Type: VT_BOOL
Typical R/W: R/W
Description: ILockBytes
ISequentialStream
IStorage
IStream
If the value of this property is set to VARIANT_TRUE, the specified column is treated as storage object that exposes the specified interface.
If this property is set on all columns, the provider must be capable of exposing all columns of the rowset as storage objects.
|
DBPROP_IMMOBILEROWS |
Type: VT_BOOL
Typical R/W: R Only
Description: Immobile Rows
Specifies values as either of:
-
VARIANT_TRUE, which specifies that the rowset will not reorder inserted or updated rows. For IRowsetChange::InsertRow, rows will appear at the end of the rowset.
-
VARIANT_FALSE, which indicates that if the rowset is ordered, then inserted rows and updated rows (where one or more of the columns in the ordering criteria are updated) obey the ordering criteria of the rowset. If the rowset is not ordered, then inserted rows are not guaranteed to appear in a determinate position and the position of updated rows is not changed.
This property is meaningful only if DBPROP_OWNINSERT is VARIANT_TRUE.
|
DBPROP_LITERALBOOKMARKS |
Type: VT_BOOL
Typical R/W: R Only
Description: Literal Bookmarks
Specifies values as either of:
-
VARIANT_TRUE, which indicates that bookmarks can be compared literally. That is, they can be compared as a sequence of bytes. Furthermore, if the bookmarks are ordered (as specified by the DBPROP_ORDEREDBOOKMARKS property), the bytes are guaranteed to be ordered so that an arithmetic comparison as their scalar type yields the same result as a call to IRowsetLocate::Compare. Setting the value of this property to VARIANT_TRUE automatically sets the value of DBPROP_BOOKMARKS to VARIANT_TRUE.
-
VARIANT_FALSE, which indicates that bookmarks can only be compared with IRowsetLocate::Compare.
|
DBPROP_LITERALIDENTITY |
Type: VT_BOOL
Typical R/W: R Only
Description: Literal Row Identity
Specifies values as either of:
-
VARIANT_TRUE, which indicates that the consumer can perform a binary comparison of two row handles to determine whether they point to the same row.
-
VARIANT_FALSE, which indicates that the consumer must call IRowsetIdentity::IsSameRow to determine whether two row handles point to the same row.
Whether the handle of a newly inserted row can be successfully compared to another handle is specified by the DBPROP_STRONGIDENTITY property.
|
DBPROP_MAXOPENROWS |
Type: VT_I4
Typical R/W: R Only
Description: Maximum Open Rows
Specifies the maximum number of rows that can be active at the same time. This limit does not reflect resource limitations such as RAM, but does apply if the rowset implementation uses some strategy that results in a limit. If there is no limit, the value of this property is zero.
|
DBPROP_MAXPENDINGROWS |
Type: VT_I4
Typical R/W: R only
Description: Maximum Pending Rows
Specifies the maximum number of rows that can have pending changes at the same time. This limit does not reflect resource limitations such as RAM, but does apply if the rowset implementation uses some strategy that results in a limit. If there is no limit, this value is zero.
|
DBPROP_MAXROWS |
Type: VT_I4
Typical R/W: R Only
Description: Maximum Rows
Specifies the maximum number of rows that can be returned in a rowset. If there is no limit, this value is zero.
|
DBPROP_MAYWRITECOLUMN |
Type: VT_BOOL
Typical R/W: R Only
Description: Column Writable
Specifies whether a particular column is writable or not. Note that this property can be set implicitly through the command used to create the rowset. For example, if the rowset is created by the SQL statement SELECT A,B FROM MyTable FOR UPDATE OF A, then this property is VARIANT_TRUE for column A and VARIANT_FALSE for column B.
|
DBPROP_MEMORYUSAGE |
Type: VT_I4
Typical R/W: R Only
Description: Memory Usage
Estimates the amount of memory that can be used by the rowset. If it is 0, the rowset can use unlimited memory. If it is 1–99 inclusive, the rowset can use the specified percentage of total available virtual memory (physical and page file). If it is greater than or equal to 100, the rowset can use up to the specified number of kilobytes of memory.
|
DBPROP_NOTIFICATIONGRANULARITY |
Type: VT_I4
Typical R/W: R/W
Description: Notification Granularity
Specifies values as one of:
-
DBPROPVAL_NT_SINGLEROW, which indicates that, for methods that operate on multiple rows and generate multiphased notifications, the provider calls IRowsetNotify::OnRowChange separately for each phase for each row. A cancellation affects a single row. It does not affect the other rows, and notifications are still sent for these rows.
-
DBPROPVAL_NT_MULTIPLEROWS, which indicates that, for methods that operate on multiple rows and generate multiphased notifications, then for each phase, the provider calls OnRowChange once for all rows that succeed and once for all rows that fail. This separation can occur at each phase where a change can fail. For example, if IRowsetChange::DeleteRows deletes some rows and fails to delete others during the preliminary work phase, it calls OnRowChange twice: once with DBEVENTPHASE_SYNCHAFTER and the array of handles of rows that it deleted, and once with DBEVENTPHASE_FAILEDTODO and the array of handles of rows it failed to delete. A cancellation affects all rows with handles that were passed to OnRowChange.
-
DBPROP_NOTIFICATIONGRANULARITY does not affect how providers return notifications about events that affect columns or the entire rowset.
|
DBPROP_NOTIFICATIONPHASES |
Type: VT_I4
Typical R/W: R Only
Description: Notification Phases
Specifies a bitmask that indicates the notification phases supported by the provider. A combination of two or more of the following:
-
DBPROPVAL_NP_OKTODO
-
DBPROPVAL_NP_ABOUTTODO
-
DBPROPVAL_NP_SYNCHAFTER
-
DBPROPVAL_NP_FAILEDTODO
-
DBPROPVAL_NP_DIDEVENT
The DBPROPVAL_NP_FAILEDTODO and DBPROPVAL_NP_DIDEVENT bits must be returned by all providers that support notifications.
|
DBPROP_NOTIFYCOLUMNSET
DBPROP_NOTIFYROWDELETE
DBPROP_NOTIFYROWFIRSTCHANGE
DBPROP_NOTIFYROWINSERT
DBPROP_NOTIFYROWRESYNCH
DBPROP_NOTIFYROWSETRELEASE
DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
DBPROP_NOTIFYROWUNDOCHANGE
DBPROP_NOTIFYROWUNDODELETE
DBPROP_NOTIFYROWUNDOINSERT
DBPROP_NOTIFYROWUPDATE
|
Type: VT_I4
Typical R/W: R Only
Description: Column Set Notification.
Row Delete Notification
Row First Change Notification
Row Insert Notification
Row Resynchronization Notification
Rowset Release Notification
Rowset Fetch Position Change Notification
Row Undo Change Notification
Row Undo Delete Notification
Row Undo Insert Notification
Row Update Notification
Specifies a bitmask that indicates whether the notification phase can be cancelled, that is zero or more of:
-
DBPROPVAL_NP_OKTODO
-
DBPROPVAL_NP_ABOUTTODO
-
DBPROPVAL_NP_SYNCHAFTER
|
DBPROP_ORDEREDBOOKMARKS |
Type: VT_BOOL
Typical R/W: R/W
Description: Bookmarks Ordered
Specifies values as either of:
-
VARIANT_TRUE, which indicates that bookmarks can be compared to determine the relative position of their associated rows in the rowset. Setting the value of this property to VARIANT_TRUE automatically sets the value of DBPROP_BOOKMARKS to VARIANT_TRUE.
-
VARIANT_FALSE, which indicates that bookmarks can be compared only for equality. Whether bookmarks can be compared byte-by-byte or must be compared with IRowsetLocate::Compare depends on the value of the DBPROP_LITERALBOOKMARKS property.
|
DBPROP_OTHERINSERT |
Type: VT_BOOL
Typical R/W: R/W
Description: Other’s Inserts Visible
Specifies values as either of:
-
VARIANT_TRUE, which indicates that the rowset can see rows inserted by someone other than a consumer of the rowset. That is, if someone other than a consumer of the rowset inserts a row, any consumer of the rowset can see that row the next time it fetches a set of rows containing it. Note that this includes rows inserted by other parties in the same transaction, as well as rows inserted by parties outside the transaction.
The transaction isolation level does not affect the ability of the rowset to see rows inserted by other parties in the same transaction, such as other rowsets in the same session. However, it does restrict the ability of the rowset to see rows inserted by parties outside the transaction.
-
VARIANT_FALSE, which indicates that the rowset cannot see rows inserted by others.
For programmers accustomed to the cursor model in ODBC, the DBPROP_OTHERUPDATEDDELETE and DBPROP_OTHERINSERT properties correspond to ODBC cursors as follows:
Static Cursor
-
DBPROP_OTHERINSERT = VARIANT_FALSE
-
DBPROP_OTHERUPDATEDELETE = VARIANT_FALSE
Keyset-driven cursor
-
DBPROP_OTHERINSERT = VARIANT_FALSE
-
DBPROP_OTHERUPDATEDELETE = VARIANT_TRUE
Dynamic cursor
-
DBPROP_OTHERINSERT = VARIANT_TRUE
-
DBPROP_OTHERUPDATEDELETE = VARIANT_TRUE
Furthermore, the DBPROP_OWNUPDATEDELETE and DBPROP_OWNINSERT properties correspond to the values returned by the SQL_STATIC_SENSITIVITY information type in SQLGetInfo in ODBC.
|
DBPROP_OTHERUPDATEDELETE |
Type: VT_BOOL
Typical R/W: R/W
Description: Other’s Changes Visible
Specifies values as either of:
-
VARIANT_TRUE, which indicates that the rowset can see updates and deletes made by someone other than a consumer of the rowset. That is, suppose someone other than a consumer of the rowset updates the data underlying a row or deletes the row. If the row is released completely, any consumer of the rowset will see that change the next time it fetches the row. Note that this includes updates and deletes made by other parties in the same transaction, as well as updates and deletes by parties outside the transaction.
The transaction isolation level does not affect the ability of the rowset to see updates or deletes by other parties in the same transaction, such as other rowsets in the same session. However, it does restrict the ability of the rowset to see updates or deletes by parties outside the transaction.
-
VARIANT_FALSE, which indicates that the rowset cannot see updates and deletes by others.
|
DBPROP_OWNINSERT |
Type: VT_BOOL
Typical R/W: R/W
Description: Own Inserts Visible
Specifies values as either of:
|
DBPROP_OWNUPDATEDELETE |
Type: VT_BOOL
Typical R/W: R/W
Description: Own Changes Visible
Specifies values as either of:
|
DBPROP_QUICKRESTART |
Type: VT_BOOL
Typical R/W: R/W
Description: Quick Restart
Specifies values as either of:
-
VARIANT_TRUE, which indicates that IRowset::RestartPosition is relatively quick to execute. In particular, it does not re-execute the command that created the rowset.
-
VARIANT_FALSE, which indicates that RestartPosition is expensive to execute and requires re-executing the command that created the rowset.
Although the value of this property can be set to VARIANT_TRUE, the provider is not required to honor it. The reason for this is that the provider does not know what the command is at the time the property is set. In particular, the consumer can set this property and then change the command text. However, the provider can fail this property if it is never able to quickly restart the next fetch position. Thus, if a consumer successfully sets this property, it must still check this flag on the rowset to determine if the next fetch position can be quickly set.
|
DBPROP_REENTRANTEVENTS |
Type: VT_BOOL
Typical R/W: R Only
Description: Re-entrant events
Specifies values as either of:
-
VARIANT_TRUE, which indicates that the provider supports re-entrancy during callbacks to the IRowsetNotify interface. The provider might not support re-entrancy on all rowset methods. These methods return DB_E_NOTREENTRANT.
-
VARIANT_FALSE, which indicates that the provider does not support such re-entrancy. The provider returns DB_E_NOTREENTRANT on methods called during the notification.
Regardless of this flag, all providers must support IRowset::GetData and IRowset::ReleaseRows calls during notifications, so long as the columns being accessed do not include deferred columns.
|
DBPROP_REMOVEDELETED |
Type: VT_BOOL
Typical R/W: R/W
Description: Remove Deleted Rows
If the value of this property is VARIANT_TRUE, the provider removes rows it detects as having been deleted from the rowset. That is, fetching a block of rows that formerly included a deleted row does not return a handle to that row.
Which rows the rowset detects as having been deleted is determined by the DBRPOP_OWNUPDATEDELETE and DBPROP_OTHERUPDATEDELETE properties. Whether the rowset removes these rows is determined by this property.
Note that this property is independent of the transaction isolation level. While the transaction isolation level in some cases determines whether the rowset can detect a row as having been deleted, it has no effect on whether or not the rowset removes that row.
For programmers accustomed to the cursor model in ODBC, this value of the property is always VARIANT_TRUE for rowsets implemented through dynamic cursors. That is, dynamic cursors always remove deleted rows. Whether static and keyset-driven cursors remove deleted rows depends on the value of this property.
|
DBPROP_REPORTMULTIPLECHANGES |
Type: VT_BOOL
Typical R/W: R Only
Description: Report Multiple Changes
Specifies values as either of:
-
VARIANT_TRUE, which indicates that an update or delete can affect multiple rows and the provider can detect that multiple rows have been updated or deleted. This happens when a provider cannot uniquely identify a row. For example, the provider might use the values of all the columns in the row to identify the row. If these columns do not include a unique key, an update or delete might affect more than one row.
-
VARIANT_FALSE, which indicates that an update or delete always affects a single row or the provider cannot detect whether it affects multiple rows.
|
DBPROP_RETURNPENDINGINSERTS |
Type: VT_BOOL
Typical R/W: R Only
Description: Return Pending Inserts
Specifies values as either of:
-
VARIANT_TRUE, which indicates that the methods that fetch rows, such as IRowset::GetNextRows, can return pending insert rows; that is, rows that have been inserted in delayed update mode but for which IRowsetUpdate::Update has not yet been called.
-
VARIANT_FALSE, which indicates that the methods that fetch rows cannot return pending insert rows.
|
DBPROP_ROWRESTRICT |
Type: VT_BOOL
Typical R/W: R Only
Description: Row Privileges
Specifies values as either of:
-
VARIANT_TRUE, which indicates that access rights are restricted on a row-by-row basis. If the rowset supports IRowsetChange, IRowsetChange::SetData can be called for some but not all rows. A rowset must never count or return a handle for a row for which the consumer does not have read access rights.
-
VARIANT_FALSE, which indicates that access rights are not restricted on a row-by-row basis. If the rowset supports IRowsetChange, SetData can be called for any row.
|
DBPROP_ROWSET_ASYNCH |
Type: VT_I4
Typical R/W: R/W
Description: Asynchronous Rowset Processing
Specifies a bitmask that indicates the asynchronous processing performed on the rowset.
Specifies values as zero or more of:
-
DBPROPVAL_ASYNCH_INITIALIZE, which indicates that the rowset is initialized asynchronously. The method requesting the rowset returns immediately, but attempting to call any interface other than IConnectionPointContainer to obtain the IID_IDBStatusNotify connection point may fail and the full set of interfaces may not be available on the rowset until asynchronous initialization has completed.
-
DBPROPVAL_ASYNCH_SEQUENTIALPOPULATION, which indicates that the rowset is randomly asynchronously populated. Requests for rows may return DB_E_ENDOFROWSET before the end of the rowset is actually reached. Asynchronously populated rows may be inserted anywhere in the rowset.
-
The consumer may set both DBPROPVALUE_ASYNCH_SEQUENTIALPOPULATION and DBPROPVALUE_ASYNCH_RANDOMPOPULATION bits to request that the rowset be asynchronously populated either sequentially or randomly. The consumer is prepared for asynchronous notifications in OnRowChange as well as from IDBAsynchStatus. Only one property is returned by the rowset. If the rowset is asynchronously populated it returns either DBPROPVAL_ASYNCH_RANDOM or DBPROPVAL_ASYNCH_SEQUENTIAL.
If no bits are set (the default) the rowset is initialized and populated synchronously. All requested interfaces are available when the method requesting the rowset returns and requesting rows block until the requested number of hRows are obtained or the end of the rowset is reached.
|
DBPROP_ROWTHREADMODEL |
Type: VT_I4
Typical R/W: R/W
Description: Row Threading Model
Specifies the threading model of the rowsets generated by the command, that is:
-
DBPROPVAL_RT_FREETHREAD
-
DBPROPVAL_RT_APTMTTHREAD
-
DBPROPVAL_RT_SINGLETHREAD
|
DBPROP_SERVERCURSOR |
Type: VT_BOOL
Typical R/W: R/W
Description: Server Cursor
If the value of this property is set to VARIANT_TRUE with ICommandProperties::SetProperties, the cursor underlying the rowset (if any) must be materialized on the server.
If the value of this property is not set with SetProperties, it is up to the provider to decide where to materialize the cursor.
The consumer can determine where the cursor was materialized by checking the value of this property on the rowset.
|
DBPROP_STRONGIDENTITY |
Type: VT_BOOL
Typical R/W: R Only
Description: Strong Row Identity
Specifies values as either of:
-
VARIANT_TRUE, which indicates that the handles of newly inserted rows can be compared as specified by DBPROP_LITERALIDENTITY.
-
VARIANT_FALSE, which indicates that there is no guarantee that the handles of newly inserted rows can be compared successfully. In this case, IRowsetIdentity::IsSameRow might return DB_E_NEWLYINSERTED.
A newly inserted row is defined to be a row for which an insertion has been transmitted to the data source, as opposed to a pending insert row.
|
DBPROP_TRANSACTEDOBJECT |
Type: VT_BOOL
Typical R/W: R/W
Description: Objects Transacted
Specifies values as either of:
-
VARIANT_TRUE, which indicates that any object created on the specified column is transacted. That is, data made visible to the data source through the object can be committed with ITransaction::Commit or aborted with ITransaction::Abort.
-
VARIANT_FALSE, which indicates that any object created on the specified column is not transacted. That is, all changes to the object are permanent once they are made visible to the data source.
If this property is set on a column that does not contain an object, it is ignored.
|
DBPROP_UPDATABILITY |
Type: VT_I4
Typical R/W: R/W
Description: Updatability
Specifies a bitmask that indicates the supported methods on IRowsetChange, that is, zero or more of:
-
DBPROPVAL_UP_CHANGE, which indicates that SetData is supported.
-
DBPROPVAL_UP_DELETE, which indicates that DeleteRows is supported.
-
DBPROPVAL_UP_INSERT, which indicates that InsertRow is supported.
-
DBPROP_UPDATABILITY, which should be used in conjunction with DBPROP_IROWSETCHANGE. If DBPROP_IROWSETCHANGE is VARIANT_TRUE and DBPROP_UPDATABILITY is not set, then it is provider-specific what methods are supported on IRowsetChange.
|