社区
C++ Builder
帖子详情
求一线程!
kinglh
2004-10-25 04:17:15
我想用一个线程来联接数据库,这个线程的功能是:查询数据库中是否有记录的Flag = 0的记录,要是有则把它的一个字段(Flag)修改为1,显示该条记录(这个暂时不管),(新添加的记录时Flag = 0).
我原来用一个TTimer控件! 把这个功能每几秒钟执行一次!这样联接远程数据库会很慢! 影响主窗口的其实操作~!
请问一个线程怎样做!最好能做成同步的线程!
谢谢!
...全文
124
5
打赏
收藏
求一线程!
我想用一个线程来联接数据库,这个线程的功能是:查询数据库中是否有记录的Flag = 0的记录,要是有则把它的一个字段(Flag)修改为1,显示该条记录(这个暂时不管),(新添加的记录时Flag = 0). 我原来用一个TTimer控件! 把这个功能每几秒钟执行一次!这样联接远程数据库会很慢! 影响主窗口的其实操作~! 请问一个线程怎样做!最好能做成同步的线程! 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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?我感觉还是逻辑上的错误吧。
libevent多
线程
libevent多
线程
, 参考mariotcp 参考http://blog.csdn.net/i_am_jojo/article/details/7587838流程图
Android应用程序消息处理机制
Android应用程序与传统的PC应用程序一样,都是消息驱动的。也就是说,在Android应用程序主
线程
中,所有函数都是在一个消息循环中执行的。Android应用程序其它
线程
,也可以像主
线程
一样,拥有消息循环。Android应用程序主
线程
是一个特殊的
线程
,因为它同时也是UI
线程
以及触摸屏、键盘等输入事件处理
线程
。主
线程
对消息循环很敏感,一旦发生阻塞,就会影响UI的流畅度,甚至发生ANR问题。这个PPT讲Android应用程序
线程
消息循环原理,主要涉及到Handler和Looper两个类,以及根据消息循环的不同使用场景,总结出三种
线程
使用模型。掌握Android应用程序消息处理机制,有助于我们熟练地使用同步和异步编程,提高程序的运行性能
深度解析qt核心机制:信号槽的多
线程
行为与对象的
线程
依附性
【注:若信号调用
线程
与接受者依附
线程
是不同的
线程
,但是connect链接强制指定了direct模式,槽函数的执行
线程
依然是在信号调用
线程
上,这意味着信号调用的地方会等待槽函数执行结束返回;2.不同
线程
间的一个
线程
存放事件任务到另一个
线程
的事件队列中:这时信号的触发(调用信号)的
线程
就是存放动作的发出者,由这个
线程
存放事件任务到接收者所依附
线程
的事件队列中;1.信号触发
线程
,或者是信号调用
线程
指的是执行(调用)emit【无论是显示还是隐式】的
线程
,而非connect 发送者对象所依附的
线程
!
如何在一个
线程
中指定休眠或唤醒另一个
线程
如何在一个
线程
中指定休眠或唤醒另一个
线程
背景及问题:在线一个聊天的程序,客户端有两个
线程
:A和B。服务器发送一个消息到客户端,这两个
线程
都有接收的功能,想让A接收消息而阻塞B不让他接收。办法:1.
线程
B用来做什么的?两个
线程
都有接收功能,又要A优先于B,那么就要确保A先接收,B在A接收的情况下才接收?如果是,就让B来判断A的接收状态就可以了。2. 可以设计一个公共接收接口,...
进程:我一夫一妻!
线程
:我一次八个妹子!你选那个?
进程,也叫任务。就是正常执行的程序。一个程序有两种状态:一是没有被执行,在硬盘上躺着的软件;二是按了exe程序执行的,这时会进入内存,被CPU读取,这就是进程。为什么需要
线程
,不直接用进程?答:咱们之前的代码用的都是一个核心,即使我们再怎么优化,最后也会不够用,而且其他核心都看戏,所以我们需要让多个核心也就是“并发编程”
C++ Builder
13,873
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章