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;
}

解决方案 »

  1.   

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

  2.   

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