r))
return false;
for (int i = 0;i < lfileds;++i)
{
VARIANT Vt;
Vt.vt = VT_I4;
Vt.intVal = i;
_tstring strName = pRes->Fields->GetItem(&Vt)->Name;
vTitle.push_back(strName);
}
return true;
}
catch(_com_error e)
{
ADOERR(e.ErrorMessage());
}
return false;
}
测试文件
//test.cpp
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
#include
#include <windows.h>
#include "Dump.h"
#include "Ado.h"
#include
using namespace std;
void PrintRecord(CAdo &ado,_RecordsetPtr &prs)
{
if(!prs->State) return;
long lcountItem = 0;
ado.GetFiledsCount(prs,&lcountItem);
std::vector<_tstring> vTitle;
ado.GetFileds(prs,vTitle);
for (int i = 0;i < vTitle.size();++i)
{
wcout<adoEof)
{
for(int i = 0;i < lcountItem;++i)
{
VARIANT vt;
vt.vt = VT_I4;
vt.intVal = i;
if(prs->GetCollect(_variant_t(long (i))).vt !=VT_NULL)
{
cout<<(_bstr_t)prs->GetCollect(vt)<<" ";
}
else
{
cout<<"NULL"<MoveNext();
}
}
void main()
{
::CoInitialize(NULL);
CAdo ado;
bool bOpen = ado.Open(_T("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test;Data Source=CAIR"));
if(bOpen)
{
long lcout = 0;
bool bRet = ado.GetRecordSetCount(_T("select count(*) from Student"),lcout);
VARIANT vt;
vt.vt = VT_I4;
vt.intVal = 0;
//_RecordsetPtr prs = ado.Exec(_T("select * from Student"),&vt);
///> 执行存储过程
structStoreProcParam param[3];
param[0].Direction = adParamInput;
param[0].DataType = adVarWChar;
param[0].DataSize = 4;
param[0].szParamName = _T("sname");
param[0].strVal = _T("jfm");
param[1].Direction = adParamInput;
param[1].DataType = adInteger;
param[1].DataSize = -1;
param[1].strVal = 20;
param[1].szParamName = _T("Sage");
param[2].Direction = adParamOutput;
param[2].DataType = adInteger;
param[2].DataSize = -1;
param[2].strVal = 0;
param[2].szParamName = _T("IsRight");
///> 执行存储过程
cout<<"执行存储过程StuProc3 结果:"< 获取存储结果输入输出参数
VARIANT val;
ado.GetStoreProcParamVal(_T("sname"),val);
ado.GetStoreProcParamVal(_T("IsRight"),val);
if(val.intVal != 0)
{
cout<<"SName:jfm Sage:20"<<"数据库存在该项!"<数据库不存在该项!"<State)
{
prs->Close();
}
prs.Release();
///> 打开记录集
cout<<"执行打开记录集:select * from Student"<State)
{
pRecord->Close();
}
pRecord.Release();
}
::CoUninitialize();
}
//>> ADO 执行结果:
![]()