刚开始接触三层架构,按照对书的理解,有关数据库访问的内容都是写在DAL上.个人感觉在执行完一个查询功能后,数据库的连接就应该要关闭,请教各位这个连接应该如果关闭?
在DAL里面写一个关闭连接的方法??

解决方案 »

  1.   

    sqlconntion.open()
    sqlconntion.close()ada填充类的组件,会自己处理open和close的
      

  2.   

    对于非托管资源代码,我们应该进行手动释放资源。SqlConnection.Close();
    SqlCommand.Close();
    SqlDataReader.Close();以上是调用各个类的Close()方法,以释放资源。还有另一种方法,使用using语句using(SqlConnection connection = new SqlConnection(connString))
    {
      //利用using语句的话,就不用手动释放connection对象的资源了。因为它会在using语句末尾自动释放资源。使用using语句的对象必须实现IDisposable接口
    }
      

  3.   

    什么时候想用连接,就直接用sqlconnection
     private static SqlConnection connection;
            public static SqlConnection Connection
            {
                get
                {
                    string strConn = System.Configuration.ConfigurationManager.AppSettings["connecionstring"].ToString();
                    if (connection == null)
                    {
                        connection = new SqlConnection(strConn);
                        connection.Open();
                    }
                    else if (connection.State == System.Data.ConnectionState.Closed)
                    {
                        connection.Open();
                    }
                    else if (connection.State == System.Data.ConnectionState.Broken)
                    {
                        connection.Close();
                        connection.Open();
                    }
                    return connection;
                }
            }
      

  4.   

    对数据库操作的方法中你还得写一个断开连接并释放资源的方法
    执行完一次DAL后,都调用一下
      

  5.   


    SqlConnection.open()的代码我手动写过,.close()的要不要自己写?
      

  6.   


    不用自己写SqlConnection.close()的方法?
      

  7.   

     string constr = ConfigurationManager.ConnectionStrings["conName"].ConnectionString;
            public void getDate()
            {
                using (SqlConnection con = new SqlConnection(constr))
                {
                    自动释放资源,不用自己写SqlConnection.close()的方法了
                }
            }