SqlDbConnection mydb = new SqlDbConnection();
            mydb.conn.Open();            string strread = "select * from tab";
            SqlCommand cmd = new SqlCommand(strread, mydb.conn);
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.Read())
            {
                so something....
            }
            else
            {
                Response.Write("<script>alert('记录不存在,确认返回!');history.go(-1);</script>");
                return;
            }
            dr.Dispose();
            cmd.Dispose();
            mydb.conn.Close();我想问的是,要都能关闭数据链接此处的mydb.conn.Close()放在哪里最好,,,,,??如果没有取到记录,就执行js那一句返回上一页了,那下面的dr.Dispose();cmd.Dispose();mydb.conn.Close();有没有闭关啊?
新手学习求指点,,,,,,,,,,,,,,,,,,,,,谢谢!!!!!!!!

解决方案 »

  1.   

    try
                    {
                        //程序正常执行
                    }
                    catch
                    {
                        //捕获异常
                    }
                    finally
                    {
                        //mydb.conn.Close()
                    }
      

  2.   

    try
                    {
                        //这里放你的代码
                    }
                    catch
                    {
                        //捕获异常
                    }
                    finally
                    {
                        //mydb.conn.Close()
                    }
      

  3.   

    try
       {if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
       string strread = "select * from tab";
       SqlCommand cmd = new SqlCommand(strread, mydb.conn);
       SqlDataReader dr = cmd.ExecuteReader();
       if (dr.Read())
       {
    dr.Dispose();
       cmd.Dispose();
     
       so something....
       }
       else
       {
       Response.Write("<script>alert('记录不存在,确认返回!');history.go(-1);</script>");
       return;
       }
     
       }
       catch (Exception e)
            {
                strConnError = "数据检索失败:" + e.Message;
                return null;
            }
       finally
            {
                if (conn.State != ConnectionState.Closed)
                {                conn.Close();
                }
            }晕,,,,,,,如上,我执行那句js返回上一页了,数据链接还能关闭吗?
      

  4.   

    http://www.cnblogs.com/xuebingz/archive/2011/04/22/2025038.html
      

  5.   

    连接数据库的conn.open()要打开的晚,关闭的早。。
      

  6.   

    可能我表达的不够清楚,,,我的意思是try
     {
     //这里。这里,,,看这里,,,,如果这边有判断,结果是跳转到其他页,,,那么,,,,,这下面的finally中的数据链接还是不是关闭了??????????????????????????????
    }
    catch
     {
     //捕获异常
    }
    finally
     {
     //mydb.conn.Close()
     }
      

  7.   

    - -finally
    白话文解释就是你的这个代码段是否执行成功是否有异常都执行这个代码段
    也就是说 你的这段代码如果出现异常 或者不出现异常
    他都会走进这个括号进行代码执行 这样的话你的数据库连接就关闭了
      

  8.   

    感谢这位朋友的大白话,,,,,,对于不会的人来说大白话最实用,放几句代码,不用大白话解说一下,新手是不懂的,还不如不说,因为那几句代码网上多的很,,,,大家别笑话撒,,,,,,如果熟悉的话,也不会问这么浅显的问题嘛,相信谁都是从不会开始的,,,,
    Response.Write("<script>alert('记录不存在,确认返回!');history.go(-1);</script>");
    return;
     代码段中跳转页面后,有return;,,,,,下面的finally中仍然执行??是这意思不?
      

  9.   

    用using就好,等效于try finally
    修改了下你的代码:
    string strread = "select * from tab";
    using(SqlDbConnection mydb = new SqlDbConnection())
    using(  SqlCommand cmd = new SqlCommand(strread, mydb.conn))
    {
        mydb.conn.Open();
        
        using(SqlDataReader dr = cmd.ExecuteReader())
        {
            if (dr.Read())
            {
                so something....
            }
            else
            {
                Response.Write("<script>alert('记录不存在,确认返回!');history.go(-1);</script>");
                return;
            }
        }
        mydb.conn.Close();
    }