当前位置:首页
开发技术指南» 文章正文
    引言:

 ·新手算法问题    »显示摘要«
    摘要: class bja{ public static void main(string args[]){ int sum=0; int j,n,k; if(args.length!=2){ system.out.println("ming ling hang can shu cuo wu:"); } else{ j=integer.......
 ·asp.net(c#) 与 vb的区别问题    »显示摘要«
    摘要: 各位,我是新手,我想问问在asp.net(c#) 中怎样才能在开发环境中生成一个控件的事件的代码,比如说 public void datagrid_page(object sender,datagridpagechangedeventargs e) 这个过程的声明怎么自动生成啊,我写了半天也没写对,最后还是copy得,可是在asp.net(vb) 中只要选中datagrid1控件,然后选择......


能不能共享一个数据连接而不用频繁地打开与关闭连接

我在连数据库的时候一般都是执行完SQL后立即将Connection   Close()了。  
  能不能设定一个全局的Connection共享它,直到程序退出的时候再关闭,这样是不是可以提高性能?会带来什么样的问题呢?

NO.1   作者: JasonHeung

如果同时访问数据库的用户不是很多,这样做是可以的。

NO.2   作者: jiadalsm

连接池一旦创建,直到活动进程终止时才会被毁坏。非活动或空池的维护只需要最少的系统开销。  
   
  连接的添加  
  连接池是为每个唯一的连接字符串创建的。当创建一个池后,将创建多个连接对象并将其添加到该池中,以满足最小池大小的要求。连接将根据需要添加到池中,直至达到最大池大小。  
   
  当请求   SqlConnection   对象时,如果存在可用的连接,则将从池中获取该对象。若要成为可用连接,该连接当前必须未被使用,具有匹配的事务上下文或者不与任何事务上下文相关联,并且具有与服务器的有效链接。  
   
  如果已达到最大池大小且不存在可用的连接,则该请求将会排队。当连接被释放回池中时,连接池管理程序通过重新分配连接来满足这些请求。对   Connection   调用   Close   或   Dispose   时,连接被释放回池中。  
   
  警告       建议使用完   Connection   后始终将其关闭,以便连接可以返回到池中。这可以使用   Connection   对象的   Close   或   Dispose   方法来实现。不是显式关闭的连接可能不会添加或返回到池中。例如,如果连接已超出范围但没有显式关闭,则仅当达到最大池大小而该连接仍然有效时,该连接才会返回到连接池中。  
  注意       不要在类的   Finalize   方法中对   Connection、DataReader   或任何其他托管对象调用   Close   或   Dispose。在终结器中,仅释放类直接拥有的非托管资源。如果类不拥有任何非托管资源,则不要在类定义中包含   Finalize   方法。有关更多信息,请参见垃圾回收编程。  
  连接的移除  
  如果连接生存期已过期,或者连接池管理程序检测到与服务器的连接已断开,连接池管理程序将从池中移除该连接。请注意,只有在尝试与服务器进行通信后,才可以检测到这种情况。如果发现某连接不再连接到服务器,则会将其标记为无效。连接池管理程序会定期扫描连接池,查找已释放到池中并标记为无效的对象。找到后,这些连接将被永久移除。  
   
  如果存在与已消失的服务器的连接,那么即使连接池管理程序未检测到已断开的连接并将其标记为无效,仍有可能将此连接从池中取出。当发生这种情况时,将生成异常。但是,为了将该连接释放回池中,仍必须将其关闭。  
   
  事务支持  
  连接是根据事务上下文来从池中取出并进行分配的。请求线程和所分配的连接的上下文必须匹配。因此,每个连接池实际上又分为不具有关联事务上下文的连接以及   N   个各自包含与一个特定事务上下文的连接的子部分。  
   
  当连接关闭时,它将被释放回池中,并根据其事务上下文放入相应的子部分。因此,即使分布式事务仍然挂起,仍可以关闭该连接而不会生成错误。这样,您就可以在随后提交或中止分布式事务。  
   
  使用连接字符串关键字控制连接池  
  SqlConnection   对象的   ConnectionString   属性支持连接字符串键/值对,这些键/值对可用于调整连接池逻辑的行为。  
   
  下表描述了可用于调整连接池行为的   ConnectionString   值。  
   
  名称   默认值   说明    
  Connection   Lifetime   0   当连接返回到池中时,将对它的创建时间和当前时间进行比较,如果时间间隔超过由   Connection   Lifetime   指定的值,则会毁坏该连接。在聚集配置中可以使用它来强制在运行服务器和刚联机的服务器之间达到负载平衡。    
  如果值为零   (0),则将使池连接具有最大的超时期限。  
     
  Connection   Reset   true   确定在从池中移除数据库连接时是否将其重置。对于   Microsoft   SQL   Server   版本   7.0,如果设置为   false,将避免在获取连接时经历一个额外的往返过程,但必须注意的是连接状态不会被重置。    
  Enlist   true   当为   true   时,如果存在事务上下文,池管理程序将自动在创建线程的当前事务上下文中登记连接。    
  Max   Pool   Size   100   池中允许的最大连接数。    
  Min   Pool   Size   0   池中维护的最小连接数。    
  Pooling   true   当为   true   时,将从相应的池中取出连接,或者在必要时创建连接并将其添加到相应的池中。    
   
   
  建立池连接可以显著提高应用程序的性能和可缩放性。SQL   Server   .NET   Framework   数据提供程序自动为   ADO.NET   客户端应用程序提供连接


    摘要: the problem with subclassing if you develop activex controls and intend to subclass or hook a window, youll very quickly discover that doing it is not at all straightforward. a typical problem is ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE