我有一个内置在Delphi
的应用程序,它使用MySQL
和MyDAC components
O.S.访问Windows XP
数据库。
我希望此应用程序在System Startup
上运行,因此我将Application shortcut
添加到Startup
文件夹中,同时添加了Registry key
。
但是当我启动系统时,首先会弹出一条Microsoft错误消息
Myapplication.exe has encountered a problem and needs to close.
并要求报告错误。 在此之后,应用程序出现另一个错误
Exception EMyError in module MyApplication.exe
Can't connect to MySQL server on 'localhost'(10061)
Socket error on connect.
我该如何克服这个?
任何帮助表示赞赏
答案 0 :(得分:5)
一些提示:
EMyError
异常 - 在这种情况下,请使用Sleep(5000)
等待5秒,然后重试,直到建立连接为止的地方。使用服务的典型代码可能是:
procedure TMyService.Execute;
var retry: boolean;
begin
retry := true;
repeat
try
ConnectToDatabase;
retry := false; // connection success
except
on E: EMyError do
sleep(5000); // wait 5 seconds and retry
end;
if Terminated then
exit; // avoid endless loop
until not retry;
// ... now you are connected and you can continue
答案 1 :(得分:4)
您需要为您的连接实现try .. except循环。如果失败,应等待一段时间再试一次。很可能你的应用程序比你的mysql实例更早和/或更快地启动。