用C++ 通过ADO方式访问SQLServer 2000
vector<string> RunProcRS(char *procName, _ParameterPtr *Parameters,int size)
{
_CommandPtr pCommand;
_RecordsetPtr pRecordset;
_variant_t var;
string str_value;
string record;
vector<string> Result;
int count = 0;
Open(dbName,User,Password);
try
{
pCommand.CreateInstance(__uuidof(Command));
pCommand->ActiveConnection = m_pConnection;
pCommand->CommandText = procName;
pCommand->CommandType = adCmdStoredProc;
for(int i = 0; i < size; i++)
{
pCommand->Parameters->Append(Parameters[i]);
}
pRecordset = pCommand->Execute(NULL,NULL,adCmdStoredProc);
//取得字段列表
FieldsPtr pFields = pRecordset->Fields;
count = pFields->GetCount();
while(!pRecordset->EndOfFile)
{
record = "";
for(int i = 0; i < count; i++)
{
var = pRecordset->GetCollect(_variant_t((long)i));
if(var.vt != VT_NULL)
{
str_value = (LPSTR)_bstr_t(var);
record = record + str_value + " ";
}
}
Result.push_back(record);
pRecordset->MoveNext();
}
pRecordset->Close();
}
catch(_com_error e)
{
string ErrorMessage(e.ErrorMessage());
string ErrorType("储存过程操作出错!\r\n错误信息: ");
string ErrorTime(GetTime());
string CRLF("\r\n\r\n");
PrintProviderError(ErrorTime + ErrorType + ErrorMessage + CRLF);
return false;
}
Close();
return Result;
}
这是一个通过存储过程返回一个记录集的方法,
但一旦我的存储过程中 有几条SQL语句的时候总是出问题(比如一条insert,一条select)!
不知道为社么?望高手指点,小弟雪地里跪求!,如果要整个类就我就贴出来!