C# 关于数据库连接失败时程序卡住无反应的有关问题
C# 关于数据库连接失败时程序卡住无反应的问题
代码如上。
1)当服务器IP地址正确,然后数据库名/用户名/登陆密码有问题的时候,程序1秒内就可以捕捉到异常,弹出错误提示;
2)当服务器IP地址连不通的时候,程序先是卡住无响应,要等好久才能弹出报错信息。
请教,当服务器地址连不通的时候,如何才能让异常信息在1-2秒内报出来?
------解决方案--------------------
参考类似的帖子
帖子里用的tcp去试探链接的,TCP的办法有局限,因为服务器地址可以不是IP地址。
另外还有人提到用线程去链接,并计时,计时超过多少时间还没连接上,就算无法链接。这个思路也不错。
private static SqlConnection mySqlConnection;
private static string ConnectionString="";
private string ConnectionStringFunction()//根据文本框内的参数值,返回连接字符串
{
return "server=" + this.textBox1.Text + ";database=" + this.textBox2.Text + ";uid=" + this.textBox3.Text + ";pwd=" + this.textBox4.Text + ";Asynchronous Processing=True;Connection Timeout=1;";
}
private void checkLinkBtn_Click(object sender, EventArgs e)//测试数据库是否连接成功按钮
{
ConnectionString = ConnectionStringFunction();
mySqlConnection = new SqlConnection(ConnectionString);
try
{
mySqlConnection.Open();
}
catch
{
//TEST
messageBox.show("失败");
}
finally
{
if (mySqlConnection.State == ConnectionState.Closed || mySqlConnection.State == ConnectionState.Broken)
{
this.label5.Text = "连接失败";
}
else
{
this.label5.Text = "连接成功";
}
mySqlConnection.Close();
}
}
代码如上。
1)当服务器IP地址正确,然后数据库名/用户名/登陆密码有问题的时候,程序1秒内就可以捕捉到异常,弹出错误提示;
2)当服务器IP地址连不通的时候,程序先是卡住无响应,要等好久才能弹出报错信息。
请教,当服务器地址连不通的时候,如何才能让异常信息在1-2秒内报出来?
------解决方案--------------------
参考类似的帖子
帖子里用的tcp去试探链接的,TCP的办法有局限,因为服务器地址可以不是IP地址。
另外还有人提到用线程去链接,并计时,计时超过多少时间还没连接上,就算无法链接。这个思路也不错。