private static SqlConnection connection;
 connection = new SqlConnection(connectionString);
用 static 整个网站是不是就只有一个connection?用静态的可行吗?

解决方案 »

  1.   

    为什么不这样
            public static SqlConnection getConn()
            {
                SqlConnection conn = new SqlConnection(connString);
                return conn;
            }
    每次新声明一个conn
      

  2.   

    这样当然也可以的.但是这样每次都new一块内存的.虽然能自己释放,但是效率上比不上前者.
      

  3.   

    你试试两个SqlDataReader读取一组数据的功能,试试它们并行执行,可能吗?没经过真正产品(维护时期)的历练,仅仅从入门书学编程,会产生很多想当然的编程理论。我唯一想说的只是:SQL Server的SqlConnection是基于连接池的机制,因此当你Close一个SqlConnection的时候并不是物理关闭而是逻辑关闭,当你Open一个SqlConnection的时候是逻辑打开而并不是物理打开连接。如果你认为SqlConnection是物理连接因而相当了“生命成静态”,是画蛇添足反而造成多用户使用服务器时经常造成程序崩溃。
      

  4.   


    private static void cmd6()
            {
                int num = 0;
                string sql = "select count(*) from bookstore";
                SqlConnection conn = DBHelper.getConn();
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);//同一个conn
                SqlCommand cmd2 = new SqlCommand(sql, conn);
                  
                num = (int)cmd.ExecuteScalar();
                string s = string.Format("rows {0}", num);
                Console.WriteLine(s);
                //如果cmd用完conn就关了,怎么办?
                num = (int)cmd2.ExecuteScalar();
                s = string.Format("rows {0}", num);
                Console.WriteLine(s);            conn.Close();
                Console.WriteLine("conn close");
                Console.ReadKey();
            }如果是静态的变量都指向同一个连接
    那cmd用完conn就关了,cmd2怎么办?
      

  5.   

    private static SqlConnection connection;
     connection = new SqlConnection(connectionString);你这样就是全局共享这个connection,一旦某个用户连接connection出现了问题
    其他连接这个网站的用户都会有问题建议不要这么做使用全局静态变量一定要考虑清楚.....不要随便用