0

假设我有我的客户端应用程序,它与 MySQL 服务器建立连接。极好的。我没有把它作为一个线程来实现。我只是利用 MySQLConnection 类。

现在让我们说,对办公室非常粗心的 Jim 在没有事先征求许可的情况下意外地重新启动了 MySQL 服务器。

我想知道何时发生断开连接,以便客户端应用程序知道并且用户不会收到很多错误。

我可以想出几种方法来检查这一点,但我不知道它们是否会起作用,即使它们的设计很优雅。我想知道你们认为最合适的方式是什么。

  • 将连接实现为线程并每 x 秒检查一次(如果可能的话)
  • 当连接断开时创建并处理一个事件(有点依赖于上面的一点)
  • 也许我什至不知道 MySQL 连接器库中内置了一个事件
  • 其他一些我不知道的神秘暗码

很感谢任何形式的帮助。

编辑:这个问题已在评论中得到回答。谢谢阅读。

4

1 回答 1

0

我有一个“偶尔连接”的应用程序并遇到了这个问题。我需要知道用户是否有网络连接,如果有,他们是否有允许他们连接到 SQL Server 数据库的 VPN 连接。我使用计时器每分钟 ping 一次数据库服务器以检查其可达性。

    public NetworkStatus GetNetworkStatus()
    {
        NetworkStatus netStatus = new NetworkStatus();
        netStatus.NetworkAvailable = NetworkInterface.GetIsNetworkAvailable();

        try
        {
            if (netStatus.NetworkAvailable)
            {
                Ping p = new Ping();
                // Create a buffer of 32 bytes of data to be transmitted.
                string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
                byte[] buffer = Encoding.ASCII.GetBytes(data);
                PingReply reply = p.Send(DB_SERVER_NAME, 1200, buffer);
                netStatus.PublisherPingSuccess = reply.Status == IPStatus.Success;
            }
        }
        catch (Exception ex)
        {
            netStatus.PublisherPingSuccess = false;
            netStatus.Error = ex;
        } 
        return netStatus;
    }
于 2009-06-04T12:44:39.523 回答