sto cercando di utilizzare la libreria ADO (msado15.dll) senza usare visualC++
nel caso specifico sto utilizzando devC++ ma potrei anche usarne un'altro, cmq
aggiungo la libreria ai riferimenti del progetto(sarebbe interessante capire come poterlo fare con qualsiasi editor di testo)
ho questo codice di seguito e ottengo in compilazione degli errori del tipo:
_RecordsetPtr non dichiarato; _bstr_t non dichiarato ecc ecc insomma tutti questi identificatori non dichiarati ?? potete darmi qualche suggerimento?
non dovrebbero essere dei tipi definiti all'interno della libreria? forse non la vede?
come posso fare?
codice:
#include <stdio.h>
#include <iostream>
#include <windows.h>
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);
}