In short, the OLE DB consumer templates are to database programming what ATL is to GUI programming. One of the great benefits of this approach is that you can choose the level you are working at. You can use the template library and stay at a high level of abstraction, but you also have access to all the lower-level details. You need some kind of intermediate protective layer. A set of COM components is a good choice for accomplishing this, and the OLE DB consumer templates are a good tool for gluing the components and the database together.
Databases are one of many choices.
One of the traditional drawbacks of storing data in a database is that the database is complicated for the programmer to manage. At first, I was happy being a simple OLE DB consumer templates programmer. As time passed, however, I realized that there was no in-depth documentation of this library and no book devoted to it. I had to explore this library by myself. Furthermore, I realized that the OLE DB consumer templates did not cover all facets of OLE DB, so I started writing small extensions that would cover additional aspects of OLE DB or offer different options.