Delphi连接sql数据库过程界面会卡死怎么办

 我来答
匿名用户
2016-04-15
展开全部
可以尝试如下作法:
1. 自定义一个类,ADOConnection、ADOQUERY为其成员域成员动态创建;
2. 启动线程去执行连接操作;此线程有一标志,当连接有结果(成功或失败)后置TRUE;
3. 界面单元调用此线程,WHILE判断线程标志为TRUE时,说明连接有结果。
while not customerThread.flag do begin
application.ProcessMessages.
end;
金山毒霸
2024-10-31 广告
电脑在启动游戏或软件的时候,桌面弹出错误提示框“0xc0000094”,应该怎么办?电脑报错,很大可能是因为某些DLL文件出现了异常,比如感染了病毒、DLL文件丢失等。解决方法如下:一、 手动解决方法1、先确定电脑操作系统是多少位的,现在的... 点击进入详情页
本回答由金山毒霸提供
wdz521
2016-07-31 · TA获得超过233个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:158万
展开全部

是这样的,你这个连接sql数据库过程,我可以认为是一个耗时过程,

就是连接的过程会卡死,但是连接完成后,界面就恢复正常了,对吧?

那我就说下这个问题,在我们开发程序的时候,总是会遇到耗时过程,

这种操作如果在界面还显示的情况下,同时这个耗时过程是在主线程中进行的,

那么确实会卡死,所以你要做的应该是

  1. 增加进度条(如果连接过程是分多句执行的,那么,可以在主线程中增加观察者,观察子线程中的连接过程,连接过程每走几句,可以刷新一次进度条,如果一句内卡住,那么就得改进度条样式,变为没有百分比的样式)

  2. 耗时过程在子线程中处理(如果主线程中有为维护进度条增加的观察者的方法,也要维护)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haoxyer
2017-05-03 · TA获得超过1405个赞
知道小有建树答主
回答量:447
采纳率:85%
帮助的人:212万
展开全部
原因:a) 检索SQL实例过程导致卡死
b)TADOConnection连接SQL数据库超时卡死
解决办法:针对情况a,我们可以通过指定实例,指定设备名(或者指定IP地址);
针对情况b,我们可以通过设置TADOConnection.CommandTimeout参数来限定等待时间,同时嵌套try except 捕获异常处理;
示例代码:TADOConnection的连接字符:Provider=SQLOLEDB.1;Password=usrname;Persist Security Info=True;User ID=sa;Initial Catalog=dbname;Data Source=127.0.0.1\SQL2008;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False
连接代码:
try
con1.ConnectionString := Format(AConStr, [FGetLocalName]);
con1.CommandTimeout =1000;
con1.Connected:=True;
except
{异常处理}
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大毛瞰世界
2016-05-09 · 超过34用户采纳过TA的回答
知道答主
回答量:100
采纳率:100%
帮助的人:79万
展开全部
卡死是肯定的,因为主线程被占用,所以出现没有相应的情况,要解决可以考虑delphi封装的Tthread来做,不过最好用匿名线程,我认为最简便。

我这没有数据库,可以参考:
Tthread.CreateAnonymousThread(
procedure begin
//这里写上查询语句
end
) .start;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哎呀……18a91a6
2016-04-18 · TA获得超过4.2万个赞
知道大有可为答主
回答量:7246
采纳率:76%
帮助的人:2953万
展开全部
一个经验告诉你。
Delphi或BCB对SQL数据库进行数据的联接或处理时,每次(批)数据库的指令操作之间必需有一定的间隔,否则极易出现“卡死”或数据错漏的情况。
这个卡死是因为SQL服务器反应不过来,还是本地程序反应不过来就不确定了,我的做法是每步操作间进行一定的延时,一般非大量重复的工作延时1秒左右,大量重复的工作延时0.1秒左右(要根据实测情况进行调整)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式