Accessing the Web Storage System Using ADO and ExOLEDB
- The ADO/OLE DB Conspiracy
- What Does ADO 2.5 Have to Do with Exchange 2000?
- The Role of the Web Storage System
- The Exchange OLE DB Provider
- File URLs
- HTTP URLs
- Programmatically Getting a User's HTTP Mailbox Folder URLs
- The Open Method of the ADO 2.5 Record Object
- Using Web Storage System SQL to Get a List of Folders
- Web Storage System SQL
- The SELECT Statement
- The ORDER BY Clause
- The RANK BY Clause
- Some Unsupported SQL
- Summary
The ADO/OLE DB Conspiracy
By now, most programmers working with the Microsoft development tool set have heard of Microsoft's Universal Data Access (UDA) strategy. The basic tenet is that regardless of the type of repository that houses your data, you should be able to get to it using just one application programming interface (API)--namely, ActiveX Data Objects (ADO). Sure, some component is going to have to know the low-level details of where the data lives, but that component (known as an OLE DB provider) hides all of these details from the ADO programmer. He or she just uses the ADO object model to programmatically manipulate data from a disparate bunch of data stores. Microsoft Data Access Components (MDAC) ties it all together by packaging ADO with the necessary OLE DB providers.
Figure 7.1 shows the big picture that we have described here. Consider the real-world scenario in which your company has corporate data stored in several heterogeneous data sources. You need to write an application that has access to all of the data. The same application needs to be available from any Web browser. With ADO, your application can have one consistent programming interface to access all of the data. As long as the data store supplies an OLE DB provider that conforms to Microsoft's standard, a developer can use ADO to access the underlying data.
As the diagram in Figure 7.1 clearly suggests, you can bypass ADO and directly code against the interfaces provided natively by the OLE DB providers. Well, you could. However, the code is not trivial, and you are limited to C++ as a language choice.