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); }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)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.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)

