1:静态变量也会用到连接池吗?
例如: public static Connection connection;
我声明了一个静态 Connection 变量, 不是知道 我再给这个变量赋 不同连接之后,连接池会保留 以前的连接吗? 如何可以,那么 如果同时多人 使用这个连接的时候 ,会不会出现等待 。
2:反射连接之后 连接池是否保留连接
Connection conn1 = 反射连接();
我如果下次 操作 同样写成 上面那样,不知道 是会重新执行反射操作,还是直接从 连接池中取出连接呢?
上面2点,我十分不解,希望高手 详细解答。。感激不尽~
Connection 变量被赋值后,原有连接将中断,因为GC在回收Connection时会调用析构释放连接。
GC回收时间不定,需手动释放。
DbConnection.Open 从连接池中获取一条连接(DbConnectionInternal);
DbConnection.Close 将 DbConnection 持有的一条连接归还给连接池;
DbConnection析构的时候,会调用 Close。
DbConnectionInternal.Close,Doom,才真正的断开与数据库服务器的连接。
DbConnectionInternal 何时真正的断开,取决于连接池的属性设置,诸如Min Connection Size,Max Connection Size,Deactive Queue ,Connection Lifetime,Connection Timeout等参数,以及
DbConnectionInternal 是否被 DbDataReader,DbCommand等对象引用。