非常奇怪的问题~~帮我看看错误

时间:2022-06-01 18:56:38
UINT Send_Thread(LPVOID LParam){
CoInitialize(NULL);
DataBase DB1,DB2;
CString SQL1,SQL2;
CTime CT;

try{
while (Scan_Status){
CT=CTime::GetCurrentTime();
SQL1="select * from tb1 where 1=0";
SQL2.Format("Select * from tb2 where IsSend=0 and SendTime<'%s'",CT.Format("%Y-%m-%d %H:%M:%S"));
if (DB1.IsConnect() && DB2.IsConnect()){
if (DB1.Open(SQL1) && DB2.Open(SQL2)){
while (!DB2.IsEof()){
Span_Data* SD=new Span_Data;
DB2.GetCollect("Content",SD->Content);
DB2.GetCollect("RecvTel",SD->RecvTel);
DB2.GetCollect("SaleType",SD->SaleType);
DB2.GetCollect("SendIp",SD->SendIP);


DB1.AddNew();
DB1.PutCollect("RecvTel",SD->RecvTel);
DB1.PutCollect("SendTime",SD->SendTime);
DB1.PutCollect("Content",SD->Content);
DB1.PutCollect("SendIp",SD->SendIP);
DB1.PutCollect("LV",10);
DB1.PutCollect("Status",0);
if (DB1.Update()){
DB2.PutCollect("IsSend",true);
DB2.Update();
}

DB2.MoveNext();
delete SD;
}
DB1.CloseConnect();
DB2.CloseConnect();
}
}else{
DB1.OpenUDL(DBLink);
DB2.OpenUDL(DBBUFLink);
}
Sleep(1000);
}//
}
catch(...){
DB1.CloseConnect();
DB2.CloseConnect();
}
return 0;
}

5 个解决方案

#1


非常奇怪的问题~
----------------------------
问题在哪?
你不会让大家帮你去一条条看吧?

#2


程序正常..现在出现一个这样的问题.这个线程要从DB2里取值到DB1里.一般还算正常.数据库用的是SQLSERVER2000.这个线程是程序的一个按钮激活的一个独立线程.一个变量来控制是否停止.
问题一,如果我关闭程序.这个线程还在运行吗?
问题二,为什么会在数据库里一直在插入同一条记录.同时,在这个线程里其它数据正常运行.只有一条记录在死命的插入.而且关闭了程序也一直在插入.这现象与个这函数有关系吗?

#3


该回复被版主删除

#4


注意同步。

#5


DB2.PutCollect("IsSend",true);
DB2.Update();我发现了这条语句没有更新数据库.为什么?
有时正常有时不正常.

#6


代码看晕了!

#1


非常奇怪的问题~
----------------------------
问题在哪?
你不会让大家帮你去一条条看吧?

#2


程序正常..现在出现一个这样的问题.这个线程要从DB2里取值到DB1里.一般还算正常.数据库用的是SQLSERVER2000.这个线程是程序的一个按钮激活的一个独立线程.一个变量来控制是否停止.
问题一,如果我关闭程序.这个线程还在运行吗?
问题二,为什么会在数据库里一直在插入同一条记录.同时,在这个线程里其它数据正常运行.只有一条记录在死命的插入.而且关闭了程序也一直在插入.这现象与个这函数有关系吗?

#3


该回复被版主删除

#4


注意同步。

#5


DB2.PutCollect("IsSend",true);
DB2.Update();我发现了这条语句没有更新数据库.为什么?
有时正常有时不正常.

#6


代码看晕了!