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

try.........catch 问题
private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                SqlConnection conn = new SqlConnection("data source=192.168.1.40;database=test;user id=test;password=test");
                conn.Open();
                MessageBox.Show("打开成功");
                conn.Close();
            }
            catch
            {
                MessageBox.Show("打开失败");
            }
        }



为什么  当连接数据库失败时,  程序会死掉 (在   conn。open()这里死掉的)  过了很久才会  进入  catch 块  执行  而不是  马上  进入catch块
------最佳解决方案--------------------
conn.Open();表示正在连接数据库中,里面可能包括失败重试等操作,当然时间长了
------其他解决方案--------------------
你没设置timeout...默认尝试连接时间好像是30秒

SqlConnection conn = new SqlConnection("data source=192.168.1.40;database=test;user id=test;password=test;timeout=10");

不记得是不是这么写的了,反正就这样的
------其他解决方案--------------------
conn.Open()如果不能连接上就会等待服务器给出响应,直到timeout,然后报出异常,在捕捉
------其他解决方案--------------------
conn.Open()如果不能连接上就会等待服务器给出响应,直到timeout,然后报出异常,在捕捉
------其他解决方案--------------------
string myconnection = "server=(local);database=news;uid=sa;pwd=123456";
SqlConnection conn = new SqlConnection(myconnection);
换成这个试试?
------其他解决方案--------------------
 catch(Exception ex)
            {
               MessageBox.Show(ex.Message);
            }
------其他解决方案--------------------
看看数据库地址 数据库名称 用户名 密码 是否正确,搞个正确的试试
------其他解决方案--------------------
连接速度慢,还要匹配
------其他解决方案--------------------
学习一下
------其他解决方案--------------------
打开的资源要及时释放:

             try
             {
                 SqlConnection conn = new SqlConnection("data source=192.168.1.40;database=test;user id=test;password=test");