#include <iostream>
#include "stdafx.h"
int main()
{
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
_variant_t TheValue;
if(!AfxOleInit())
{
std::cout<<"COM Init error\n";
return -1;
}
pConnection.CreateInstance(__uuidof(Connection));
pRecordset.CreateInstance (__uuidof(Recordset));
try
{
         pConnection->Open ("driver = {SQL Server};Server = 127.0.0.1;DATABASE =  master;UID = sa;PWD = viton","","",adModeUnknown); pRecordset->Open ("select name from sysdatabase",_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
while(!pRecordset->adoEOF)
{
TheValue = pRecordset->GetCollect ("name");
if(TheValue.vt != VT_NULL)
std::cout<<(char*)_bstr_t(TheValue)<<'\n';
pRecordset->MoveNext ();
}
}catch(_com_error &e)
{
std::cout<<e.ErrorMessage ()<<'\n';
return -1;
}
pRecordset->Close();
pConnection->Close ();
return 0;
}

解决方案 »

  1.   

    #include <iostream>
    #include "stdafx.h"
    int main()
    {
    CoInitialize(NULL);
    {
    _ConnectionPtr pConnection;
    _RecordsetPtr pRecordset;
    _variant_t TheValue;
    if(!AfxOleInit())
    {
    std::cout<<"COM Init error\n";
    return -1;
    }
    pConnection.CreateInstance(__uuidof(Connection));
    pRecordset.CreateInstance (__uuidof(Recordset));
    try
    {
             pConnection->Open ("driver = {SQL Server};Server = 127.0.0.1;DATABASE =  master;UID = sa;PWD = viton","","",adModeUnknown); pRecordset->Open ("select name from sysdatabase",_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
    while(!pRecordset->adoEOF)
    {
    TheValue = pRecordset->GetCollect ("name");
    if(TheValue.vt != VT_NULL)
    std::cout<<(char*)_bstr_t(TheValue)<<'\n';
    pRecordset->MoveNext ();
    }
    }catch(_com_error &e)
    {
    std::cout<<e.ErrorMessage ()<<'\n';
    return -1;
    }
    pRecordset->Close();
    pConnection->Close ();
    }
    CoUninitialize();
    return 0;
    }
      

  2.   

    CoInitialize(NULL);
    CoUninitialize();