Rowsets must support the efficient storage and retrieval of binary large objects (BLOBs) and OLE objects. To a rowset, a BLOB or OLE object is a large sequence of uninterpreted bytes that a consumer stores in a column. The consumer is entirely responsible for interpreting the contents of the BLOB or OLE object. The provider is responsible only for providing the mechanism or mechanisms with which the consumer stores and retrieves BLOBs and OLE objects.
This chapter discusses the methods of accessing BLOB data as in-memory data, storage objects, and columns. Where in-memory data is treated as a sequence of bytes sent or retrieved in one piece, a storage object, which is the rowset that exposes storage interfaces, is retrieved or sent in pieces. The rows in the rowset act as containers of the storage objects. Limitations and lifetimes of storage objects are also discussed. OLE objects can also be stored in columns in a rowset, and are known as IPersist* objects. The manipulation, update semantics, and transaction considerations of IPersist* objects are explained.
For more information on | Go to |
Accessing BLOB data | Accessing BLOB Data in this chapter |
Column data | Creating BLOB Columns in this chapter |
In-memory data | BLOBs as In-Memory Data in this chapter |
Storage object | BLOBs as Storage Objects in this chapter |
Rowsets | Chapter 4, Rowsets |
Limitations and lifetimes of storage objects | Limitations of Storage Objects in this chapter Lifetime of Storage Objects in this chapter |
IPersist* objects | IPersist* Objects in this chapter |
BLOBs and OLE objects fall into the following categories:
A consumer determines what types of BLOBs and OLE objects a provider supports by calling IDBProperties::GetProperties with the DBPROP_OLEOBJECTS property.