public class aaa    {       
        public  SqlConnection ConnString()
        {
            SqlConnection cn=new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnString"].ToString());
            return cn; 
        }        public  void GetData(string sql)
        {
            SqlConnection cn = ConnString();
            try
            {
            }            }
            catch (System.Data.SqlClient.SqlException ex)
            {
                //throw new Exception(ex.Message);
            }
            finally
            {
                ConnString().Dispose();
                ConnString().Close();
            }
        }
    }请教高手GetData函数里的finally这样关闭对不对?还是要加
cn.Dispose();
cn.Close();

解决方案 »

  1.   

    我觉得没什么问题!你try{} 后面多了个"}"吧!
      

  2.   

    不要这样写ConnString().Dispose(); 
    直接关闭或者释放cn即可SqlConnection Dispose了就不能再Open了
    Close后还是可以再Open的
    具体看你需要了!
      

  3.   

    SqlCommand command = new SqlCommand(sql, cn);cn.Close(); 这句没有问题。
    command.Dispose();
      

  4.   

    多了个“}”没关系,主要是要加cn.Close(); 还是ConnString().Close(); 
      

  5.   

    建议这样写:
    using(SqlConnection conn=new SqlConnection(ConnstringString))
    {
         //Database Operation.
    }
    学会使用using语句。
      

  6.   

                    ConnString().Dispose(); 
                    ConnString().Close(); 
    为什么要这么写,这样的话,也不是关闭cn链接啊,这等于又新建了个链接,把新建的链接关闭了。原来的链接根本没关闭呀
      

  7.   

    是不是直接加:cn.Close();就可以了?
      

  8.   

    finally 
                { 
    ConnString().Close(); 
    ConnString().Dispose();             } 
      

  9.   

    1, 用cn 不能用 ConnString().Close();  原因如liubangls 所说;
    2,Dispose()会隐式调用Close(),并且释放更多的资源。 所以 cn.Close()也不用写了。
      

  10.   

    cn.Dispose();//关闭当前连接ConnString().Dispose();//创建新的连接然后关闭很明显应该用第一条吧@~!!~
      

  11.   

    看你要怎么关了啊,暂时关闭就用cn.close(),彻底清除这个cn就用cn.dispose(),两者同时写的话,cn.close(),写在cn.dispose()的上面。