我原来这样写    class connection
    {
        string constr = "Data Source=(local);Initial Catalog=hotel;Integrated Security=True";
        public SqlConnection ConOpen()//打开并关闭连接
        {
            SqlConnection con = new SqlConnection(constr);
            try { con.Open(); }
            catch { }
            finally { con.Close(); }
            return con;           
        }
    }但是我发现这种写法只适用只一次用到开启连接,一旦多次用到链接,就提示“连接的当前状态为已关闭”了,例如            connection cn = new connection();
            cn.ConOpen();
            SqlCommand cmd = new SqlCommand("RidSel", cn.ConOpen());//第一次用到连接
            ............
            cmd.ExecuteNonQuery();//第而次用到连接时就提示“ExecuteNonQuery 要求已打开且可用的连接。连接的当前状态为已关闭”。于是我这样修改    class connection
    {
        string constr = "Data Source=(local);Initial Catalog=hotel;Integrated Security=True";
        public SqlConnection ConOpen()//打开连接
        {
            SqlConnection con = new SqlConnection(constr);
            try { con.Open(); }
            catch { }
            return con;           
        }
        public SqlConnection ConClosed()//关闭连接
        {
            SqlConnection con = new SqlConnection(constr);
            try { con.Open(); }
            catch { }
            finally { con.Close(); }//增加了关闭
            return con;   
        }
    }在需要关闭的时候再调用ConClosed(),请问这样做可取吗?

解决方案 »

  1.   

                connection cn = new connection();
                con = cn.ComOpen();
                SqlCommand cmd = new SqlCommand("RidSel", cn.ConOpen());//第一次用到连接
                ............
                cmd.ExecuteNonQuery();/
                ...........
                con.Close();
      

  2.   

                connection cn = new connection();
                con = cn.ConOpen();
                SqlCommand cmd = new SqlCommand("RidSel", con);//第一次用到连接
                ............
                cmd.ExecuteNonQuery();/
                ...........
                con.Close();
      

  3.   

    你那个ConClosed没起做用,每次con都是new出来的不是以前用的那个,你这个类最好重写一下
      

  4.   

        class connection
        {
            static string constr = "Data Source=(local);Initial Catalog=hotel;Integrated Security=True";
            static public SqlConnection ConOpen()//打开连接
            {
                SqlConnection con = new SqlConnection(constr);
                try { con.Open(); }
                catch { }
                return con;           
            }
        }            con = connection.ConOpen();
                SqlCommand cmd = new SqlCommand("RidSel", con);//第一次用到连接
                ............
                cmd.ExecuteNonQuery();/
                ...........
                con.Close();
      

  5.   

    请问把connection.ConOpen()赋值给con,这样con的连接最后可以关闭,但ConOpen()本身不还是没有关闭吗?谢谢解答
      

  6.   

    connection.ConOpen()赋值给con,最后关闭con就是关闭ConOpen()方法中的连接,赋值后他们是同一个对象
      

  7.   

    呵呵,虽然是这样,但还是不理解,比如把b赋给a,那改变a的值或其他属性,b也不会相应改变吧