保持连接活动 - mysql

时间:2016-11-15 17:15:58

标签: mysql sql delphi dbexpress

我已经使用名为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

如果我留下任何必要的信息,请在评论中告诉我,谢谢!

1 个答案:

答案 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;