以下函数在执行时出现“连接占线导致另一个hsmt"的错误,不知道什么原因?pr是一个_RecordsetPtr对象,此函数每次连续执行1000次。因为是在用户与服务端建立网络连接时提取一千条记录发送给用户。请各位大哥帮帮忙,困扰了一个月了。数据库用的sql server2000void CMySocket::ReturnMsg()
{
box *p=new box;
try
{
if(!pr->adoEOF)
{
COleDateTime t1;
long itemid,userid,state;
short infotype,hyclass;
CString content,dateandtime,phone,username;
_variant_t vitemid,vcontent,vtime,vphone,vuserid,vinfotype,vhyclass,vname,vstate;
vitemid=pr->GetCollect("id");
vuserid=pr->GetCollect("user_id");
vhyclass=pr->GetCollect("hyuser_class");
vinfotype=pr->GetCollect("info_type");
vcontent=pr->GetCollect("content");
vtime=pr->GetCollect("dateandtime");
vphone=pr->GetCollect("phone");
vname=pr->GetCollect("username");
vstate=pr->GetCollect("state");
t1=vtime; itemid=vitemid.iVal;
userid=vuserid.iVal;
infotype=vinfotype.iVal;
hyclass=vhyclass.iVal;
state=vstate.iVal; content=vcontent.bstrVal;
username=vname.bstrVal;
username.TrimRight();
phone=vphone.bstrVal;
dateandtime=t1.Format("20%y-%m-%d %H:%M:%S");
CString sql1;
sql1.Format("(%d,%d,%d,'%s',#%s#,'%s','%s',%d,%d)",userid,hyclass,infotype,content,dateandtime,phone,username,itemid,state);
p->length=sql1.GetLength();
strcpy(p->re,sql1);
p->boxtype=9;
this->Send(p,sizeof(box));
Remain_Data--;
pr->MoveNext();
}
else
{
// if(pr->State) pr->Close();
SendNotify();
SendLeaveWords();
} }
catch(_com_error error)
{
CString errorMessage;
errorMessage.Format("%s",(LPTSTR)error.Description());
AfxMessageBox("返回信息错误");
AfxMessageBox(errorMessage);
}
}
{
box *p=new box;
try
{
if(!pr->adoEOF)
{
COleDateTime t1;
long itemid,userid,state;
short infotype,hyclass;
CString content,dateandtime,phone,username;
_variant_t vitemid,vcontent,vtime,vphone,vuserid,vinfotype,vhyclass,vname,vstate;
vitemid=pr->GetCollect("id");
vuserid=pr->GetCollect("user_id");
vhyclass=pr->GetCollect("hyuser_class");
vinfotype=pr->GetCollect("info_type");
vcontent=pr->GetCollect("content");
vtime=pr->GetCollect("dateandtime");
vphone=pr->GetCollect("phone");
vname=pr->GetCollect("username");
vstate=pr->GetCollect("state");
t1=vtime; itemid=vitemid.iVal;
userid=vuserid.iVal;
infotype=vinfotype.iVal;
hyclass=vhyclass.iVal;
state=vstate.iVal; content=vcontent.bstrVal;
username=vname.bstrVal;
username.TrimRight();
phone=vphone.bstrVal;
dateandtime=t1.Format("20%y-%m-%d %H:%M:%S");
CString sql1;
sql1.Format("(%d,%d,%d,'%s',#%s#,'%s','%s',%d,%d)",userid,hyclass,infotype,content,dateandtime,phone,username,itemid,state);
p->length=sql1.GetLength();
strcpy(p->re,sql1);
p->boxtype=9;
this->Send(p,sizeof(box));
Remain_Data--;
pr->MoveNext();
}
else
{
// if(pr->State) pr->Close();
SendNotify();
SendLeaveWords();
} }
catch(_com_error error)
{
CString errorMessage;
errorMessage.Format("%s",(LPTSTR)error.Description());
AfxMessageBox("返回信息错误");
AfxMessageBox(errorMessage);
}
}
{
strcpy(sql,sqlparam);
if(pr->State)pr->Close();
pr->Open(sql,_variant_t((IDispatch *)pconn,true),adOpenStatic,adLockOptimistic,adCmdText);
Remain_Data=pr->GetRecordCount();
if(Remain_Data>0)
{
box *p=new box;
p->boxtype=10;
this->Send(p,sizeof(box));
}
} catch(_com_error error)
{
CString errorMessage;
errorMessage.Format("%s",(LPTSTR)error.Description());
AfxMessageBox("获得新消息错误");
AfxMessageBox(errorMessage);
}
pr->Open(sql,_variant_t((IDispatch *)pconn,true),adOpenDynamic,adLockOptimistic,adCmdText);
数据库的备份也一起发过来,希望能帮到你。