private static string connStr = "server=Localhost;database=test;uid=sa;pwd=sa;";
    public SqlConnection Con = new SqlConnection(connStr);
    //并且Con在调用其它方法中被打开但没有关闭
    protected void Page_Load(object sender, EventArgs e)
    {    }
   //发现有很多程序员喜欢在页面的顶部以这种方式打开一个数据源,请问有什么好的方法可以百分百保证Con在当前页面中被关闭
   //   //因为Page_PreRenderComplete是最后一个执行的Page事件,所以本人曾偿试过在此Page事件中关闭,但也不可行
   //请问还有别的方法可以关闭Con吗
    protected void Page_PreRenderComplete(object sender, EventArgs e)
    {
       Con.Close();
    }

解决方案 »

  1.   

    补充,因为那个方法要被重复调用,所以没有关闭Con
      

  2.   

    using(con)
    {
    //操作数据库代码
    }用这个执行完之后会自动释放和关闭con连接
      

  3.   

    你测试过在页面“顶部”打开Con与在需要的地方(例如事件处理方法内部)才创建和打开局部的Con的“效率”的差别到底是多大了吗?值几毛钱?
      

  4.   


    可能你不知道,SqlConnection是有连接池的,也就是说Open/Close它并不一定是打开、关闭物理连接。例如你在For循环里循环10000次来创建、打开、访问、关闭数据库,可能也只是使用了2、3个数据库连接而不是10000个。如何重复使用数据库连接是.net自己早已经处理好的事情,你就应该老老实实地Open/Close就可以了。自己去写“共享”连接反而是画蛇添足。
      

  5.   

    using(SqlConnection conn=new SqlConnection())
    {
    }
      

  6.   


    是这样么? 对么那我这个问题根本没有问题,对吧。http://topic.csdn.net/u/20090910/16/2028a940-546d-4d1e-82ae-4ff189872499.html