La Web del Programador: Comunidad de Programadores
 
    Pregunta:  7215 - OLEDB WITH VISUAL C++
Autor:  Paula Senor
Quiero migrar mi aplicación a SQL y no utilizar ODBC, ya que es muy lento. Mi idea era a través de OLEDB, que es otra de las opciones que brinda Visual C cuando uno crea sus Recordsets, pero no me habilita esta opción. Debo estar haciendo algo mal. Agradecería al que me pueda ayudar.

  Respuesta:  Juan Pablo Crossley
Para poder usar interfaces de ADO debes importar la libreria de msado15.dll, esto lo haces con la instrucción:
#import "c:\archivos de programa\archivos comunes\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")

posteriormente puedes crear instancias de Objetos ADO Connection y ADO Recordset de esta manera:

_ConnectionPtr c;
c.CreateInstance(__uuidof(Connection));

y

_RecordsetPtr r;
r.CreateInstance(__uuidof(Recordset));

puedes referirte a la documentación de ADO para los metodos que aceptan cada uno, pero basicamente son... faciles de usar, por ejemplo para abrir una conexion con SQL Server y un servidor llamado Pruebas:

c->Open("Provider=SQLOLEDB; Data Source=Pruebas", "sa", "", -1);

para abrir un recordset:

r->Open("SELECT * FROM ACCOUNT", c.GetInterfacePtr(), adOpenDynamic, adLockBatchOptimistic, 0);

VARIANT v = r->GetCollect("Campo1");

si el campo es de tipo VT_BSTR puedes obtener el valor asi:

BSTR b = v.bstrval;

... si tienes dudas me cuentas..