【问题标题】:"ping" from C# to SQL Server [duplicate]从 C#“ping”到 SQL Server [重复]
【发布时间】:2018-01-02 15:44:39
【问题描述】:

我需要你的帮助。我需要在 Application WPF 中开发一个功能,每 30 秒触发一次,以 ping 到服务器并检查它是否未连接到 sql server,我们将显示错误消息。有没有办法从 C# SQL Server 简单地“ping”?

提前致谢!

如果我缺少任何东西,下面是我的连接代码。

/// Test that the server is connected
private  bool IsServerConnected()
{
    using (SqlConnection connection = ConnexionSGBD())
    {
        try
        {
            connection.Open();
            Console.WriteLine("SQL Connection successful.");
            return true;
        }
        catch (SqlException)
        {
            Console.WriteLine("SQL Connection failled.");
            msgException();
            return false;

        }
    }
}

//La fonction qui permet d'exécuter une requête SQL et stocker le résultat dans un datatable

public System.Data.DataTable GetTable()
{

        SqlConnection connection = ConnexionSGBD();
        string sqlrequete = "SELECT *  FROM BD;";
        System.Data.DataTable table = new DataTable();
    if (IsServerConnected()==true)
    {
        connection.Open();
        using (SqlCommand cmd = new SqlCommand(sqlrequete, connection))
        {
            table.Load(cmd.ExecuteReader());                                          
        }
        return table;

    }
    else
    {

        msgException();
        return null;
    }
}

【问题讨论】:

  • 什么不适用于您当前的代码?
  • 首先你的代码可以工作。其次,你为什么要这样做?您可以在尝试执行查询时简单地捕获异常并让用户知道连接已丢失。
  • 即使 SQL Server 在过去的某个最近时间点(例如 10 毫秒前)对“ping”做出了积极响应,这是否意味着将来使用同一台服务器将在没有任何网络错误的情况下完成。再多的预先检查也无法保护您。您需要编写能够处理实际代码执行时发生的错误的代码。那么,为什么还要编写更多没有任何用处的代码呢?
  • @S.Snoy 是的,30 秒后,默认连接超时。

标签: c# sql-server wpf sqlconnection


【解决方案1】:

只需检查 SqlConnection.State 属性,就像在其他问题中解释的那样:

Check if SQL Connection is Open or Closed

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多