在VC中使用ADO来访问SQLSERVER数据库的工作主要注意以下几步:
1.先把ADO的DLL文件import进来;
2.需要使用sqloledb的Provider;
3.要注意smart pointer的适当的使用;
4.建立数据库连接,进行操作。下面是一段可行的代码: #import "c:\Program Files\Common Files\System\ADO\msado15.dll"    no_namespace rename("EOF", "EndOfFile") ... CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
_ConnectionPtr pConn;
_RecordsetPtr pRs;
//注意使用sqloledb的Provider
_bstr_t strCnn("Provider=sqloledb;DSN=dsnname;UID=userid;PASSWORD=password;Trusted_connection=yes;"); HRESULT  hr = pConn.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
{
::MessageBox(NULL,"Failed to create connection",NULL,MB_OK+MB_ICONSTOP);
}
try
{
pConn->Open(BSTR(strCnn),"","",NULL);
}
catch(_com_error &e)
{
_bstr_t bstrDescription(e.Description());
::MessageBox(NULL,(LPCSTR)(bstrDescription) ,NULL,MB_OK+MB_ICONSTOP);
}

pRs.CreateInstance(__uuidof(Recordset)); int j;
CString strOpen; strOpen="Select * from tablename where ..."; //SQL 查询语句
j=0;
pRs->Open((LPCSTR)strOpen, _variant_t((IDispatch *)pConn,true), adOpenStatic, adLockReadOnly,adCmdText);
pRs->MoveFirst();
try
{
while(!(pRs->ADOEOF))
{
COLNAME1[j]=(LPCSTR) (_bstr_t) pRs->GetCollect("COL1"); //COL1, COL2 等为表中字段名
COLNAME2[j]=(LPCSTR) (_bstr_t) pRs->GetCollect("COL2"); //COLNAME1等存放取出来的字段内容
COLNAME3[j]=(LPCSTR) (_bstr_t) pRs->GetCollect("COL3");
pRs->MoveNext();
j++;
}
pRs->Close();
}
catch(_com_error &e)
{
_bstr_t bstrDescription(e.Description());
::MessageBox(NULL,(LPCSTR)(bstrDescription) ,NULL,MB_OK+MB_ICONSTOP);
}   
关于您所提到的问题,微软的MSDN网站上有很多详细的例子,您可以参考:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscadocodeexamplesinvisualc.asp- 微软全球技术中心 VC技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。