Overview of BLOBs and OLE Objects

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.