数据库联接成功,提取一条数据之后,还没有修改标志,程序就出现内存读写错误,挂了 unsigned long UDLen;
_variant_t UserData;
UpdateData(TRUE);
UserData=m_sSM;//操作记录集
_variant_t vContent,vID,vFlag; _RecordsetPtr m_pRecordset;
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM send where SmsFlag=0",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
vID=m_pRecordset->GetCollect("id");
vMobile=m_pRecordset->GetCollect("Mobile");
UserData=m_pRecordset->GetCollect("content");
UDLen=strlen((_bstr_t)UserData);
//================提取成功之后,使SmsFlag=1 m_pRecordset->PutCollect(_variant_t("SmsFlag"),_variant_t((long)1));///修改标志
m_pRecordset->Update();///保存到库中
m_pRecordset->MoveNext();
}
_variant_t UserData;
UpdateData(TRUE);
UserData=m_sSM;//操作记录集
_variant_t vContent,vID,vFlag; _RecordsetPtr m_pRecordset;
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM send where SmsFlag=0",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
vID=m_pRecordset->GetCollect("id");
vMobile=m_pRecordset->GetCollect("Mobile");
UserData=m_pRecordset->GetCollect("content");
UDLen=strlen((_bstr_t)UserData);
//================提取成功之后,使SmsFlag=1 m_pRecordset->PutCollect(_variant_t("SmsFlag"),_variant_t((long)1));///修改标志
m_pRecordset->Update();///保存到库中
m_pRecordset->MoveNext();
}
unsigned long UDLen;
_variant_t UserData;
UpdateData(TRUE);
UserData=m_sSM;try
{
_variant_t vContent,vID,vFlag; _RecordsetPtr m_pRecordset;
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM send where SmsFlag=0",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
vID=m_pRecordset->GetCollect("id");
vMobile=m_pRecordset->GetCollect("Mobile");
UserData=m_pRecordset->GetCollect("content");
UDLen=strlen((_bstr_t)UserData);
//================提取成功之后,使SmsFlag=1 m_pRecordset->PutCollect(_variant_t("SmsFlag"),_variant_t((long)1));///修改标志
m_pRecordset->Update();///保存到库中
m_pRecordset->MoveNext();
}
}
catch(_com_error& e)
{
AfxMessagebox(e.description());
}
建议楼主使用事务处理
try
catch
是非常重要的哦
int iRet;
unsigned long SM_ID; //返回:短消息I
unsigned char FCS;
unsigned long UDLen;
LPCTSTR UserData,DestAddr;
unsigned char byMsgID[MAX_MSG_ID]; //CMPP的字段,消息ID
memset(byMsgID, 0, MAX_MSG_ID);
_variant_t vMobile,vContent;
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM send where smsflag='0'",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if (m_pRecordset->RecordCount==0) {MessageBox("数据库数据已全部发送完毕",MB_OK,0);return;}
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
vMobile=m_pRecordset->GetCollect("Mobile");
vContent=m_pRecordset->GetCollect("Content");
DestAddr=_com_util::ConvertBSTRToString((_bstr_t)vMobile);
UserData=_com_util::ConvertBSTRToString((_bstr_t)vContent);
UDLen=strlen(_com_util::ConvertBSTRToString((_bstr_t)vContent));