我的很多方法里都是传Connection类型的参数进来
我在方法里都没关掉,在方法外传递进来的那个关掉
不知道在方法里需要把它关闭掉吗?
谢谢

解决方案 »

  1.   

    这样关就行
    下面这个小例子或许有帮助  
    private void btSave_Click(object sender, System.EventArgs e)
    {
    string htmlStr= divContent.InnerHtml;
    SqlCommand cmd=new SqlCommand();
    try
    {
    cmd.Connection=GetConn();
    cmd.CommandText="update myTable set editTime=getdate()";
    cmd.CommandType=CommandType.Text;
    cmd.Connection.Open();
    cmd.ExecuteNonQuery();
    cmd.Connection.Close();
                                         Response.Write("update success");
    }
    catch(Exception ex)
    {
    CloseConn(cmd.Connection);
    Response.Write("update fail. Error Message :"+ex.Message) ;
    }

    }
    private SqlConnection GetConn()
    {
    string str=System.Configuration.ConfigurationSettings.AppSettings["connString"];
    SqlConnection conn=new SqlConnection(str);
    return conn;
    }
    private void CloseConn(SqlConnection conn)
    {
    if (conn.State==ConnectionState.Open)
    {
    conn.Close();
    }
    }
      

  2.   

    我刚想说cmd.Connection.Close();要写到finaly里
    就发现了CloseConn(cmd.Connection);
    没什么区别吧
      

  3.   

    如果你是
    SqlConnection conn = GetConn();
    this.UseConn(conn);
    conn.Close();这样的话就没必要再在方法里面关了不过建议你在方法里面关,免得出错
      

  4.   

    我是把连接conn做成一个方法
    关闭conn也做成一个方法
    然后执行中间的数据库操作也做成一个方法
    然后调用比如conn_open()是连接,连接存放在共有变量gconn里
    conn_close()是关闭,里面是关闭gconn.Close();
    cmd(Connection)是数据操作,没有写关闭
    以上是封装我在一个程序里这么写
    conn_open()
    cmd(gconn);
    conn_close();
    这样可以吗?
    还是在cmd里面也需要关闭??
      

  5.   

    因为我打开Connection后要执行一系列的数据操作,都是传递Connection进去的
    如果在方法里关的话我怕后面的就无法执行了