[code=c]
    CoInitialize(NULL);
    _ConnectionPtr pConn(__uuidof(Connection));
    _RecordsetPtr pRst(__uuidof(Recordset));

    pConn->ConnectionString = "Provider=SQLOLEDB.1; 
              Persist Security Info=False;User ID=sa;password=362300;Initial Catalog=pubs";
    pConn->Open("", "", "", adConnectUnspecified);
    pRst = pConn->Execute("select * from authors", NULL, adCmdText);

    while(!pRst->rsEOF)
    {
        ((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("au_lname"));
        pRst->MoveNext();
    }
    pRst->Close();
    pConn->Close();
    pRst.Release();
    pConn.Release();
    CoUninitialize();
[/code]
先说说我的感受,C++利用ADO来实现对数据库的访问确实挺麻烦的,而且代码里出现的一些东西对我这个初学VC的人是个很大的难题,以下问题有的不只针对ADO方面: 
1. __uuidof 这个是什么?我知道查MSDN可以得到答案,可是一个新手怎么知道得这样写呢? 
2. _ConnectionPtr是何许人物?为什么他可以用->又可以用.呢? 
3. 关于((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("au_lname"));这句代码,AddString函数后面的参数为何要求是_bstr_t来转化? 还有_bstr_t这东西也很奇怪,为什么VC里面这么多的类型,单单一个字符,字符串类型的写法(Unicode, nonUnicode)就搞得我晕头转向; 
4. 我该如何去学VC,学完C++,感觉离VC还有很长一段路得走,现在在看孙鑫的VC教程,学下来还是晕晕的,VC的实现比较C#.Net这些复杂麻烦很多。请问识坛里的朋友,你们学习VC之路是如何走过来的呢?