不会一次返回所有记录,只能通过你的程序循环读取。 pRs->Open("SELECT * FROM Employee ORDER BY lname", "dsn=pubs;uid=sa;pwd=;", adOpenStatic, adLockOptimistic, adCmdText);
TESTHR(picRs->BindToRecordset(&rs)); while (!pRs->EndOfFile) { // Process data in the CCustomRs C++ instance variables. printf("Name = %s %s\n", (rs.m_ul_fnameStatus == adFldOK ? rs.m_ch_fname: "<Error>"), (rs.m_ul_lnameStatus == adFldOK ? rs.m_ch_lname: "<Error>")); // Move to the next row of the Recordset. // Fields in the new row will automatically be // placed in the CCustomRs C++ instance variables.
pRs->MoveNext(); }
这个recordsetPtr你有没有CLOSE? if (pRstEmployee) if (pRstEmployee->State == adStateOpen) pRstEmployee->Close(); if (pConnection) if (pConnection->State == adStateOpen) pConnection->Close();
_RecordsetPtr 使用 _RecordsetPtr xxx(__uuidof(Recordset)); xxx->Open(strSQL.c_str(),pDestConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText); 错误号 = 80040e05 错误信息:IDispatch error #3077 错误源:Microsoft OLE DB Provider for SQL Server 错误描述:对象被打开。
pRs->Open("SELECT * FROM Employee ORDER BY lname",
"dsn=pubs;uid=sa;pwd=;",
adOpenStatic, adLockOptimistic, adCmdText);
TESTHR(picRs->BindToRecordset(&rs)); while (!pRs->EndOfFile)
{
// Process data in the CCustomRs C++ instance variables.
printf("Name = %s %s\n",
(rs.m_ul_fnameStatus == adFldOK ? rs.m_ch_fname: "<Error>"),
(rs.m_ul_lnameStatus == adFldOK ? rs.m_ch_lname: "<Error>")); // Move to the next row of the Recordset.
// Fields in the new row will automatically be
// placed in the CCustomRs C++ instance variables.
pRs->MoveNext();
}
if (pRstEmployee->State == adStateOpen)
pRstEmployee->Close();
if (pConnection)
if (pConnection->State == adStateOpen)
pConnection->Close();
_RecordsetPtr xxx(__uuidof(Recordset)); xxx->Open(strSQL.c_str(),pDestConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
错误号 = 80040e05
错误信息:IDispatch error #3077
错误源:Microsoft OLE DB Provider for SQL Server
错误描述:对象被打开。
try{\
if(p!=NULL){ if( p->GetState()==adStateOpen ) p->Close(); }\
}catch(...)\
{\
;\
}
如上 close的另数据不是一次返回,只能通过你的程序循环读取,是在内存读吗? 需要数据库吗?我是静态获取的,数据库改变不影响我的
_variant_t vUsername,vID,vname; //变量声明
_RecordsetPtr m_pRecordset; //记录集
CString strid;
_ConnectionPtr connection;
m_pRecordset.CreateInstance(__uuidof( Recordset )); //创建实例
m_pRecordset->Open("SELECT * FROM users",connection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);//执行SQL语句,得到记录集, connection必须已和数m_pRecordset->Close();m_pConnection->Close();m_pRecordset=NULL;m_pConnection=NULL;
p->Open( stringSql,pSrcConn.GetInterfacePtr(),adOpenStatic,adLockReadOnly,adCmdText);
DWORD nCount = p->RecordCount;
RELEASE_RECORDSET( p); // if openstatus close
p.Release();
p.~_com_ptr_t();