Rowsets are the central objects that enable OLE DB components to expose and manipulate data in tabular form. A rowset object is a set of rows in which each row has columns of data. Using the OLE DB Provider for SQL Server CE, a rowset object is created either when ICommand::Execute returns data or by directly calling IOpenRowset::OpenRowset.
The following issues affect the handling of rowsets in Microsoft® SQL Server™ 2000 Windows® CE Edition (SQL Server CE):
- SQL Server CE only supports the ability to retrieve one row at a time.
- Rows should be retrieved sequentially by calling IRowset::GetNextRows(NULL, 0, 1...).
- Rowsets can become zombies if the internal resource on which they depend goes away because a transaction aborts.
- The OLE DB Provider for SQL Server CE supports data binding "by value" but not "by reference."
- SQL Server CE always returns computed column values when inserting new rows, allowing clients to immediately retrieve this information. This allows the client to view any identity column value for the new row even before the row has been committed to the data store. Because of this, the value for DBPROP_SERVERDATAONINSERT must always be VARIANT_TRUE.
- There are other properties that correspond to various interfaces that can be supported on a rowset. Clients that do not request the interfaces that they want to use on the resulting interface through the property mechanism cannot necessarily access those interfaces, even if the cursor type selected can actually support that functionality. For more information, see Rowset Properties.
When you use rowsets, a number of factors can affect the efficiency of the operation. For more information, see Using Rowsets Efficiently.