100分求助急急急!!!谁先解决全给他。ADO“连接占线导致另一个hsmt”的问题
以下函数在执行时出现“连接占线导致另一个hsmt"的错误,不知道什么原因?pr是一个_RecordsetPtr对象,此函数每次连续执行1000次。因为是在用户与服务端建立网络连接时提取一千条记录发送给用户。请各位大哥帮帮忙,困扰了一个月了。数据库用的sql server2000
void 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->remark,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);
}
}
问题点数:100、回复次数:15Top
1 楼bohut(●伯虎● )回复于 2005-11-03 08:24:57 得分 0
打开数据库连接的代码怎么写的?Top
2 楼kkbws(酒池肉林)回复于 2005-11-03 08:44:31 得分 0
pconn->Open("driver={SQL Server};Server=wysc;DATABASE=mainbase;UID=wyscnetadmin;PWD=admin3005","","",adModeUnknown);Top
3 楼bohut(●伯虎● )回复于 2005-11-03 08:49:09 得分 0
打开结果集的代码呢?Top
4 楼kkbws(酒池肉林)回复于 2005-11-03 08:57:18 得分 0
char sql[1000];
try
{
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);
} Top
5 楼bohut(●伯虎● )回复于 2005-11-03 09:02:39 得分 0
试试:
pr->Open(sql,_variant_t((IDispatch *)pconn,true),adOpenDynamic,adLockOptimistic,adCmdText);Top
6 楼kkbws(酒池肉林)回复于 2005-11-03 09:05:46 得分 0
哦说明一下每个网络连接都有自己的_RecordsetPtr互相之间不干扰,但共享一个_ConnectionPtr
多个用户可能同时登录Top
7 楼kkbws(酒池肉林)回复于 2005-11-03 09:12:33 得分 0
兄台,照你那样做连一条数据都不显示了Top
8 楼bohut(●伯虎● )回复于 2005-11-03 09:15:42 得分 0
如果可能的话,请将代码发至bohut@163.com,
数据库的备份也一起发过来,希望能帮到你。Top
9 楼kkbws(酒池肉林)回复于 2005-11-03 09:32:08 得分 0
好的Top
10 楼kkbws(酒池肉林)回复于 2005-11-03 09:57:43 得分 0
bohut老兄,邮件我已经发了,请验收,麻烦您了,万分感谢。Top
11 楼kkbws(酒池肉林)回复于 2005-11-03 10:47:29 得分 0
继续求帮助,各位大佬帮帮忙,啊,好急啊,再加100分Top
12 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-12-04 17:11:25 得分 100
是不是操作太多,造成资源不够等Top
13 楼kkbws(酒池肉林)回复于 2005-12-04 17:13:16 得分 0
应该不会啊,操作也不是很多啊。没秒也就十几个包Top
14 楼kkbws(酒池肉林)回复于 2005-12-04 17:13:52 得分 0
我以前做了一个,没有这个问题啊,连接很正常。Top
15 楼kkbws(酒池肉林)回复于 2005-12-04 17:14:21 得分 0
七猫没来,不等他了,把分全给你。Top




