前面把http://bbs.csdn.net/topics/390282261/close里面的问题已经解决了。出现了新的问题:
1. 前置条件:需要链接数据库,获取多个表中的不同数据,包括源语言/目标语言(同一个表)、车型列表(另一个表),已经对应的字符串数据(第三个表);
2. 需要调用四个不同的存储过程;
3. 除了获取字符串数据这个返回的结果集比较大(多的时候有44万数据量),获取前三项都是可以的,然后第一次获取字符串数据也是可以的。但是再次调用存储过程的时候,就返回获取的结果集count为0. 请教各位指导是什么原因?不胜感激!
部分代码如下:// 链接数据库:
OnInitADOConn
{
  ::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection"); CString strConnect;
strConnect = _T("Provider=SQLOLEDB.1");
strConnect += _T(";Password=")+m_DbInfo.csPassward;
strConnect += _T(";Persist Security Info=True");
strConnect += _T(";User ID=")+m_DbInfo.csUSerName;
strConnect += _T(";Initial Catalog=")+m_DbInfo.csDBName;
strConnect += _T(";Data Source=")+m_DbInfo.csDataSource;
strConnect += _T("\n;"); m_pConnection->Open(strConnect.GetBuffer(strConnect.GetLength()+1),"","",adModeUnknown);
return TRUE;
}
catch (_com_error e)
{
CString str = e.Description();
errorMsg = &str;
AfxMessageBox(e.Description());
return FALSE;
}
}//创建Command
m_pADOComm.CreateInstance(__uuidof(Command));
m_pADOComm->CommandType = adCmdStoredProc; // set command type to stored process
m_pADOComm->ActiveConnection = m_pConnection;
m_pConnection->CursorLocation = adUseClient; 
m_pADOComm->CommandText = commText; // 调用不同的存储过程,会将这个参数重置;// 清理参数列表--在调用新的存储过程之前,会调用
m_pADOComm->Parameters->Delete("@source_language");
m_pADOComm->Parameters->Delete("@desc_language");
m_pADOComm->Parameters->Delete("@remap_flag_1");
m_pADOComm->Parameters->Delete("@remap_flag_2");
m_pADOComm->Parameters->Delete("@maker");//运行Excute,获取结果集
if(m_pConnection==NULL)
OnInitADOConn(&errorMsg);
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset = m_pADOComm->Execute(NULL,NULL,adCmdStoredProc);//运行完获取数据,对结果集进行清理
if (m_pRecordset != NULL && adStateOpen == m_pRecordset->GetState())
m_pRecordset->Close();
但是在第二次调用获取字符串的存储过程,返回结果始终为0. 实在是搞不懂什么原因导致的...
请教各位高人了。