我有一个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
测试连接,但在继续之前需要几秒钟才能超时。
答案 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;
}