OLE DB Programmer's Reference | |
Gets the data in the data store that is visible to the transaction for the specified row.
HRESULT GetVisibleData (HROW hRow, HACCESSOR hAccessor, void *pData);
Parameters
- hRow
- [in]
The handle of the row for which to get the visible data. This can be the handle of a row with a pending delete. - hAccessor
- [in]
The handle of the accessor to use. If hAccessor is the handle of a null accessor (cBindings in IAccessor::CreateAccessor was zero), IRowsetResynch::GetVisibleData does not get any data values. - pData
- [out]
A pointer to a buffer in which to return the data. The consumer allocates memory for this buffer.
Return Code
- S_OK
- The method succeeded. The status of all columns bound by the accessor is set to DBSTATUS_S_OK, DBSTATUS_S_ISNULL, or DBSTATUS_S_TRUNCATED.
- DB_S_ERRORSOCCURRED
- An error occurred while returning data for one or more columns, but data was successfully returned for at least one column.
- E_FAIL
- A provider-specific error occurred.
- E_INVALIDARG
- pData was a null pointer, and hAccessor was not a null accessor.
- E_UNEXPECTED
- ITransaction::Commit or ITransaction::Abort was called, and the object is in a zombie state.
- DB_E_BADACCESSORHANDLE
- hAccessor was invalid. It is possible for a reference accessor or an accessor that has a binding that uses provider-owned memory to be invalid for use with this method, even if the accessor is valid for use with IRowset::GetData or IRowsetChange::SetData.
- DB_E_BADACCESSORTYPE
- The specified accessor was not a row accessor. Some providers may return DB_E_BADACCESSORHANDLE instead of this error code when command accessors are passed to the rowset.
- DB_E_BADROWHANDLE
- hRow was invalid.
- DB_E_DELETEDROW
- hRow referred to a row for which a deletion had been transmitted to the data store.
- DB_E_ERRORSOCCURRED
- Errors occurred while returning data for all columns. To determine what errors occurred, the consumer checks the status values.
- DB_E_ABORTLIMITREACHED
- The provider was unable to retrieve the visible data due to reaching a limit on the server, such as a query execution timing out.
- DB_E_NEWLYINSERTED
- DBPROP_STRONGIDENTITY was VARIANT_FALSE, and hRow referred to a row for which an insertion had been transmitted to the data store.
- DB_E_NOTREENTRANT
- The provider called a method from IRowsetNotify in the consumer that had not yet returned, and the provider does not support reentrancy in this method.
- DB_E_PENDINGINSERT
- The rowset was in delayed update mode, and hRow referred to a pending insert row.
Comments
If this method performs deferred accessor validation and that validation takes place before any data is transferred, it can also return any of the following return codes for the applicable reasons listed in the corresponding DBBINDSTATUS values in IAccessor::CreateAccessor:
E_NOINTERFACE
DB_E_BADBINDINFO
DB_E_BADORDINAL
DB_E_BADSTORAGEFLAGS
DB_E_UNSUPPORTEDCONVERSION
This method makes no logical change to the state of the object.
A consumer calls IRowsetResynch::GetVisibleData to retrieve the data in the data store that is visible to the transaction for the specified row. However, IRowsetResynch::GetVisibleData does not affect the values in the rowset's copy of the row.
If IRowsetResynch::GetVisibleData fails for any reason other than DB_E_ERRORSOCCURRED, the memory that pData points to is not freed but its contents are undefined. If before IRowsetResynch::GetVisibleData failed the provider had allocated any memory to be returned to the consumer, the provider frees this memory and does not return it to the consumer. The same is true if DB_E_ERRORSOCCURRED was returned but the consumer did not request status values in the binding.
1998-2001 Microsoft Corporation. All rights reserved.