Microsoft ADO (ActiveX Data Objects) is a Component object model object for accessing data sources. It provides a layer between programming languages and databases, which allows a developer to write programs which access data, without knowing how the database is implemented. No knowledge of SQL is required to access a database when using ADO, although one can use ADO to execute arbitrary SQL commands. The disadvantage of this is that this introduces a dependency upon the database.

It is positioned as a successor to Microsoft's earlier object layers for accessing data sources, including RDO (Remote Data Objects) and DAO (Data Access Objects).

ADO consists of several top-level objects:

  • Connection (represents the connection to the database)
  • Recordset (represents a set of database records)
  • Command (represents a SQL command)
  • Record (represents a set of data, typically from a source other than a database)
  • Stream (represents a stream of data, as from a text file or web page)
  • Error (stores errors)
  • Field (represents a database field)
  • Parameter (represents a SQL parameter)
  • Property (stores information about objects)

ADO is used in conjunction with a high-level language, such as VBScript in an Active Server Pages (ASP) environment. Here is an ASP example using ADO to select the "Name" field, from a table called "Phonebook", where a "PhoneNumber" was equal to "555-5555".

dim myconnection, myrecordset, name
set myconnection = server.createobject("ADODB.Connection")
set myrecordset = server.createobject("ADODB.Recordset")

myconnection.open mydatasource myrecordset.open "Phonebook", myconnection myrecordset.find "PhoneNumber = '555-5555'" name = myrecordset.fields.item("Name") myrecordset.close set myrecordset = nothing set myconnection = nothing

This is equivalent to the following ASP code, which uses plain SQL, instead of the functionality of the Recordset object:

dim myconnection, myrecordset, name
set myconnection = server.createobject("ADODB.connection")
myconnection.open mydatasource
set myrecordset = myconnection.execute("SELECT Name FROM Phonebook WHERE PhoneNumber = '555-5555'")
name = myrecordset(0) 
myrecordset.close

set myrecordset = nothing
set myconnection = nothing