求一线程!

kinglh 2004-10-25 04:17:15
我想用一个线程来联接数据库,这个线程的功能是:查询数据库中是否有记录的Flag = 0的记录,要是有则把它的一个字段(Flag)修改为1,显示该条记录(这个暂时不管),(新添加的记录时Flag = 0).
我原来用一个TTimer控件! 把这个功能每几秒钟执行一次!这样联接远程数据库会很慢! 影响主窗口的其实操作~!

请问一个线程怎样做!最好能做成同步的线程!

谢谢!
...全文
116 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyj_china 2004-11-18
  • 打赏
  • 举报
回复
写成服务吧?其实服务也是一个线程,而且又系统自己管理,很方便的。下面是连接和执行部分的代码,你可以用向导生成服务,再添加如下代码。
void __fastcall TCustomService::ServiceExecute(TService *Sender)
{
while(!Terminated)
{
try{
AnsiString strSQL = "select flag from ds_sys_reg where flag = 0";
DScan->SQL->Clear();
DScan->SQL->Add(strSQL); //上行表中查找驾校业务数据
DScan->Open();
while (!DScan->Eof)
{
DScan->Edit();
DScan->FieldValues["flag"] = 1;
DScan->Post();
DScan->Next();
}
}catch(...)
{
buf = Now();
fp = fopen("c:\\server0731.log","a+");
fprintf(fp,"[%s] 服务异常中断,主线程15秒后重连。\n",buf);
fclose(fp);
Sleep(15000); //数据断开后15秒重连
Connection();
}
Sleep(100);
ServiceThread->ProcessRequests(false);
}
}

void __fastcall TCustomService::Connection()
{
AnsiString strConnect;
try{
//建立数据数据链接
ADOConnection1->Connected = false;
strConnect = "Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=DataBaseName;Data Source=127.0.0.1";
ADOConnection1->LoginPrompt = false;
ADOConnection1->ConnectionString = strConnect;
ADOConnection1->Connected = true;

buf = Now();
fp = fopen("c:\\Server.log","a+");
fprintf(fp,"[%s] 网络连接成功OK\n",buf);
fclose(fp);
}catch(...)
{
buf = Now();
fp = fopen("c:\\Server.log","a+");
fprintf(fp,"[%s] 初始化网络连接错误\n",buf);
fclose(fp);
}
}
kinglh 2004-10-29
  • 打赏
  • 举报
回复
怎么没人来拿分~ 真的要我把分钱部给一个人!?

kinglh 2004-10-26
  • 打赏
  • 举报
回复
只考虑连接问题!
我用ADO连接数据库, 当网络断开不能上网,也就是连接不到数据库的时候,该线程提示连接失败,并且每隔一个时间(如一分钟)再重连接一次.

有没有人知道怎么样做!! 出来帮帮忙了~
kinglh 2004-10-25
  • 打赏
  • 举报
回复
现在不是考虑怎样操作数据库的问题,因为我的数据库是远程的,在本在用ADO去联接!只要有新记录添加就时实的把它修改.
ESSENCE_JN(BCB爱好者) 现在不要讨论数据库的操作问题!
罗杰斯 2004-10-25
  • 打赏
  • 举报
回复
我感觉不是线程不线程的问题,Flag=0的时候都做了些什么?又为什么要改为1?我感觉还是逻辑上的错误吧。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧