What's New in ADO 2.1
The version number indicates that ADO 2.1 is a minor release, but it actually has a bunch of new features and several refinements to features that lacked polish in previous ADO releases. In addition to the ADOX library for database definition and security, discussed in the main body of this article, the ADO library gains a number of new features in version 2.1.

The ADO 2.1 Recordset object gains a Seek method and Index property, enabling programmers to locate data more easily by performing indexed searches of data. Because the Index property is a string (that is, the name of the index), ADOX can assist developers in using this feature, because the Indexes collection contained by the ADOX Table object exposes the names of indexes in the database.

Row updates and row synchronization enable database developers to control the capabilities of multiple tables involved in a joined relationship. Like ADOX, this functionality has existed in DAO for some time, but appears in ADO 2.1 for the first time. And as with ADOX, the feature is accessible through dynamic properties, in this case the Properties collection of the Recordset object.

The Save method introduced in ADO 2.0 blossoms into its own OLE DB provider in ADO 2.1, known as the Microsoft OLE DB Persistence Provider. In ADO 2.0, you could only save a recordset to a proprietary format. You can now save to Extensible Markup Language (XML). This gives your recordset data the potential to be read by the next generation of browser tools.

Data shaping gains new abilities to work with hierarchical data. In ADO 2.1, data shaping is able to "re-shape" shaped data, as well as additional aggregation features.

A new OLE DB service, the Microsoft Cursor Service for OLE DB, attempts to fill in for data providers that don't provide all the cursor types that ADO and OLE DB support. In this way, programmers can access disparate data sources more consistently.

Last but not least, after experimenting with the beta, it's clear that this version of ADO is much more polished than previous versions. ADO 2.1 has better documentation, in addition to a number of refinements and bug fixes. For example, ever tried retrieving the identity column of a newly created record in a Jet database in ADO 2.0? It didn't work. That bug was one of my biggest ADO pet peeves, and I'm happy to say it works properly in ADO 2.1. (This is your cue to jump up and click your heels.)