日期:2014-05-17  浏览次数:20661 次

为什么要很久才会提示数据库连接失败?
        private void button1_Click(object sender, EventArgs e)
        {
            string connectstring = "Data Source = XX;Database = YY;User id= sa;PassWord = 123";

            SqlConnection conn = new SqlConnection(connectstring);

            try
            {
                if (conn.State == ConnectionState.Closed)
                    conn.Open();
                MessageBox.Show("恭喜你,服务器连接成功!", "提示信息");              
            }

            catch (Exception ex)
            {
                MessageBox.Show("很抱歉,服务器连接失败!失败原因:" + ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }   

        }


以上是测试连接代码,如果网络正常,能很快提示连接成功。当网络不行的时候,系统卡死一分钟后才会提示连接失败。
现在我有两个问题:
1、为什么无法连接的时候,要过那么久才给出提示,这期间都在后台都判断什么?
2、有没有好的方法,当网络不通等原因导致无法连接的时候,能给予快速的反馈提示?

------解决方案--------------------
自己做个检测网络方法,设置等待窗口,提示正在连接数据库。
------解决方案--------------------
一般会多次的尝试连接的
就像 使用ping一样
到达一定的次数 才会抛出不能连接
------解决方案--------------------
http://bbs.csdn.net/topics/370007845
没有什么好办法的,sqlserver管理工具也这样。你可以把链接数据库放线程里面去做,这样就不会卡UI了,用户体验会好一些
你可以用TCP测试目标机器1433端口,不过有局限,链接字符串里的server人家可以不输入IP,而且默认的1433端口人家还可以改。
------解决方案--------------------
connection字符串里可以设置超时时间的,这个是连接超时,不是执行SQL超时,你百度下
;Timeout=30,这个Timeout应该是错的。。。
另外默认是30秒,我记得好像...

这段时间后台都在等数据库响应啊。。。。。