我已经使用名为Connect
的按钮设置了我创建的delphi应用程序。
单击它后,它将执行以下代码:
begin
someConnection.Connected:=true;
somecomenziDataSet.Active:=true;
end;
同样地,我有一个用于Disconnect
目的的按钮可以做同样的事情,但是 = false;
我的问题是我连接的数据库托管在共享主机帐户上,而mysql服务器的wait_timeout
变量设置为60秒,interactive_timeout
设置为30秒。
当然,如果我不使用我的应用程序60秒,这会让我失望。
有没有办法让这个连接保持活力?
托管公司不会改变设置,所以我坚持使用它。
我使用的是RAD Studio 10 Seattle,dbexpress
组件,TSQLConnection
,我的数据库是mysql
如果我留下任何必要的信息,请在评论中告诉我,谢谢!
答案 0 :(得分:7)
您可以使用TTimer
定期" ping"数据库(例如,给定60秒超时的间隔为10-20秒):
procedure TMyDataModule.ConnectionPingTimer(Sender: TObject);
begin
if not MySQLConnection.InTransaction then
MySQLConnection.Exceute('DO 0', nil); // or "SELECT 1" or whatever is cheapest
end;