codice:
/*

ESEMPIO 1 - SELECT 

Prima di utilizzare questo codice

1) Creare un database con ACCESS e chiamarlo "mio_database"
   creare una tabella e chiamarla "mia_tabella"
   inserire nella tabella 3 campi di tipo testo
   e chiamarli: "nome", "cognome", "telefono".
   Ora inserire nella tabella 2 o 3 record.

2) La prima riga del codice, importa la libreria ADO
   "msado15.dll", indispensabile per l'esecuzione
   del programma.
  
*/

#import "c:\Programmi\File comuni\SYSTEM\ADO\msado15.dll" no_namespace rename("EOF","EndOfFile")

#include <stdio.h>
#include <iostream>
using namespace std;

int main(int argc, char* argv[]){
    
    // Inizializzo la libreria COM prima di utilizzare le sue funzioni. 
    CoInitialize(NULL);

    // Costrutto 'try - catch' se si verifica un eccezione (exception) con 'catch' la "catturo"
    try{
	
    // Dichiaro un puntatore al recordset (utilizzando la tecnologia ADO)
        _RecordsetPtr pRst("ADODB.Recordset");
		
        // Stringa di connessione DSN-Less con un database ACCESS
        //_bstr_t strCnn("DRIVER={Microsoft Access Driver (*.mdb)};UID=;PWD=;DBQ=mio_database.mdb");
        
        // Stringa di connessione con DSN Attivo, valida con tutti i database
        _bstr_t strCnn("Provider=MSDASQL; Data Source=mio_database; Database=mio_database; User Id=; Password=; Security Info=True");
        
        // Query SQL (seleziono tutto il recordset presemte nella tabella)
        pRst->Open("SELECT * FROM mia_tabella;", strCnn, adOpenStatic, adLockReadOnly, adCmdText);
        
        // Muovo il puntatore al recordset sul primo record	 
        pRst->MoveFirst();
        
        // Itero fino alla fine del recordset (<-- totale dei record presenti nella tabella)
        while (!pRst->EndOfFile) {
        
            // Visualizzo a video il campo NOME
            cout<<(char*) ((_bstr_t) pRst->GetFields()->GetItem("nome")->GetValue())<<endl;
            
            // Visualizzo a video il campo COGNOME
            cout<<(char*) ((_bstr_t) pRst->GetFields()->GetItem("cognome")->GetValue())<<endl;
            
            // Visualizzo a video il campo TELEFONO
            cout<<(char*) ((_bstr_t) pRst->GetFields()->GetItem("telefono")->GetValue())<<endl<<endl;
            
            // Muovo il puntatore sul record successivo
            pRst->MoveNext();
        }
        
        // Chiudo connessione al recordset
        pRst->Close();

    }       
    
    // Se si verifica un errore lo catturo
    catch (_com_error &exception){
        
        // ... E lo visualizzo a video (con tanto di descrizione)
        cout<<"Errore: "<<(char*) exception.Description()<<endl;
    
    }
    
    // libero la memoria utilizzata da COM 
    CoUninitialize();
	
    return(0);
	
}
codice:
/*

ESEMPIO 2 - INSERT, DELETE, UPDATE

Prima di utilizzare questo codice

1) Creare un database con ACCESS e chiamarlo "mio_database"
   creare una tabella e chiamarla "mia_tabella"
   inserire nella tabella 3 campi di tipo testo
   e chiamarli: "nome", "cognome", "telefono".

2) La prima riga del codice, importa la libreria ADO
   "msado15.dll", indispensabile per l'esecuzione
   del programma.

*/

#import "c:\Programmi\File comuni\SYSTEM\ADO\msado15.dll" no_namespace rename("EOF","EndOfFile")

#include <iostream>
#include <cstdio>
using namespace std;

int main(int argc, char* argv[]){
    
    char queryString[200], nome[20]="pinco", cognome[20]="pallino", telefono[15]="0622222222";
    
    // Inizializzo la libreria COM prima di utilizzare le sue funzioni. 
    CoInitialize(NULL);
    
    // Costrutto 'try - catch' se si verifica un eccezione (exception) con 'catch' la "catturo"
    try{
        
        // Dichiaro un puntatore alla connessione ADO
        _ConnectionPtr pCnn("ADODB.Connection");
        
        // Stringa di connessione al database ACCESS (DSN-LESS)
        _bstr_t strCnn("DRIVER={Microsoft Access Driver (*.mdb)};UID=;PWD=;DBQ=mio_database.mdb");

        // Stringa di connessione con DSN Attivo, valida con tutti i database
        // _bstr_t strCnn("Provider=MSDASQL; Data Source=mio_database; Database=mio_database; User Id=; Password=; Security Info=True");
        
        // Apro la connessione
        pCnn->Open(strCnn, "", "", adConnectUnspecified);
        
	// Inserisco nella stringa 'queryString' la Query Sql (INSERT) 
	sprintf(queryString,"INSERT INTO mia_tabella (nome,cognome,telefono) VALUES ('%s','%s','%s');",nome,cognome,telefono);
        
	// Inserisco nella stringa 'queryString' la Query Sql (DELETE) 
	// sprintf(queryString,"DELETE FROM mia_tabella WHERE nome = '%s' AND cognome = '%s';",nome,cognome);
        
	// Inserisco nella stringa 'queryString' la Query Sql (UPDATE) 
	// sprintf(queryString,"UPDATE mia_tabella SET telefono = '0244444444' WHERE nome = '%s' AND cognome = '%s';",nome,cognome);

	// Eseguo la Query 
	pCnn->Execute(queryString, NULL, adCmdText);
        
        // Chiudo la connessione al database
	pCnn->Close();
	
        cout<<"Operazione eseguita con successo"<<endl;
    
    }
    
    // Se si verifica un errore lo catturo
    catch(_com_error &exception){
    
        // ... E lo visualizzo a video (con tanto di descrizione)
        cout<<"Errore: "<<(char*) exception.Description()<<endl;
    
    }
    
    // libero la memoria utilizzata da COM 
    CoUninitialize();
	
    return(0);

}
N.B.1 Il codice riportato nell'esempio è specifico per Microsoft Visual C++ 6.0 (Pertanto con altri compilatori ed altri ambienti potrebbe causare degli errori)

N.B.2 Nell'esempio specifico, viene effettuata una connessione ad un Database Microsoft Access, ma modificando la stringa di connessione (evidenziata in neretto) questo codice vi permette di connettervi anche ad altri Database (testato con: Oracle, SqlServer, MySql)