DataAccessObject is a native MicroSoft object model shipped with MicrosoftAccess.
It has been superseded by ActivexDataObject, which is more suited for communicating with server databases.
Information taken from VbDevelopersGuidetoAdo?
It's also a pattern for accessing RDBMS information, expounded on the Sun J2EE website <http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html>.
This page isn't quite right: the MS API is called DataAccessObjects?: note the pluralisation. I propose that except for a note redirecting the reader towards the appropriate page, this page concentrate on the pattern rather than the similarly named API. -- KeithGaughan?
Another example of this design pattern is the recommendations in the book 'Hibernate In Action'. DAO is certainly not a Microsoft-specific thing.
Is it wrong to use the term DataAccessObject generally for a specific implementation of the CaretakerPattern, where DAO is the object used to hide the concrete implementation of how the data is stored (database, files, cloud, whatever) from the application?