检查与SQL Server的在线连接,切换到离线C#Windows应用程序

时间:2017-08-28 17:23:34

标签: c# sql-server

我有一个C#Windows应用程序,我创建时连接到MS SQL服务器。如果连接断开,我需要能够切换到SQL Server Express的本地实例。这个应用程序位于一个偏远的地方,在那里上线和错过。当连接断开时,我需要连接字符串以反映到本地服务器。我有逻辑在恢复连接后将项目从本地数据库重新同步到实时数据库。但是,我在尝试自动测试连接时遇到问题。我的app.config中的连接字符串包含实时和离线连接,其中包含以下代码:

SqlConnection con = new SqlConnection(Properties.Settings.Default.MyLiveConnectionString);

如果连接断开,我希望使用本地连接:

SqlConnection con = new SqlConnection(Properties.Settings.Default.MyLocalConnectionString);

有没有人建议如何快速,快速地实现这一目标?

我可以使用try / catch测试连接,但在继续之前需要几秒钟才能超时。

1 个答案:

答案 0 :(得分:0)

public void Connect()
{
    string connectionStr = string.Empty;
    try
    {
        if(CheckConnection(Properties.Settings.Default.MyLiveConnectionString))
            connectionStr = Properties.Settings.Default.MyLiveConnectionString;
    }
    catch (Exception ex)
    {
        //Log this, etc...
    }

    if (string.IsNullOrWhiteSpace(connectionStr))
        connectionStr = Properties.Settings.Default.MyLocalConnectionString;

    using (SqlConnection conn = new SqlConnection(connectionStr))
    {

    }
}

private static bool CheckConnection(string connectionString)
{
    using (SqlConnection con = new SqlConnection(connectionString))
    {

        SqlCommand cmd = new SqlCommand("SELECT 1", conn);
        conn.Open();
        if ((int)cmd.ExecuteScalar() == 1)
            return true;
    }

    return false;
}