连接池的问题 连接池是数据库级还是本地级的,有没有一些例子,谢谢 。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你一点解释的文字: 连接池是这么一种机制,当应用程序关闭一个Connection的时候,这个连接被回收,而不是被destroy,因为建立一个连接是一个很费资源的操作。如果能把回收的连接重新利用,会减少新创建连接的数目,显著的提高运行的性能。 假设应用程序需要建立到一个名字为EmpolyeeDB的DataSource的连接。使用连接池得到连接的代码如下: Context ctx = new InITialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/EmployeeDB");Connection con = ds.getConnection("myPassword", "myUserName");除了逻辑名字以外,我们发现其代码和上面举的例子的代码是一样的。逻辑名字不同,就可以连接到不同的数据库。DataSource对象的getConnection方法返回的Connection是否是一个连接池中的连接完全取决于DataSource对象的实现方法。如果DataSource对象实现与一个支持连接池的中间层的服务器一起工作,DataSource对象就会自动的返回连接池中的连接,这个连接也是可以重复利用的。 是否使用连接池获得一个连接,在应用程序的代码上是看不出不同的。在使用这个Connection连接上也没有什么不一样的地方,唯一的不同是在JAVA的finally语句块中来关闭一个连接。在finally中关闭连接是一个好的编程习惯。这样,即使方法抛出异常,Connection也会被关闭并回收到连接池中去。代码应该如下所示: try{… }catch(){… }finally{ if(con!=null)con.close();} 三、分布式事务: 获得一个用来支持分布式事务的连接与获得连接池中的连接是很相似的。同样,不同之处在于DataSource的实现上的不同,而不是在应用程序中获得连接的方式上有什么不同。假设DataSource的实现可以与支持分布式事务中间层服务器一起工作,得到连接的代码还是如下所示: Context ctx = new InITialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/EmployeeDB"); Connection con = ds.getConnection("myPassword", "myUserName");由于性能上的原因,如果一个DataSource能够支持分布式的事务,它同样也可以支持连接池管理。 从应用程序设计者的观点来看。是否支持分布式的事务的连接对它来说没什么不同,唯一的不同是在事务的边界上(开始一个事务的地方和结束一个事务的地方),开始一个事务或者结束一个事务都是由事务服务器来控制的。应用程序不应该做任何可能妨碍服务的事情。应用程序不能够直接调用事务提交commit或者回滚rollback操作,也不能够使用事务的自动提交模式auto-commIT mode(在数据库操作完成的时候自动的调用commIT或者rollback)。 欢迎转载,但请保留出处,本文章转自[华软网] 原文链接:http://www.huarw.com/db/dbbbs/MSSQLServer/200106/302289.html 连接池是db自己管理的,一般不需要开发人员干预参考http://msdn.microsoft.com/zh-cn/library/8xx3tyca.aspx 清除池ADO.NET 2.0 引入了两种新的方法来清除池:ClearAllPools 和 ClearPool。ClearAllPools 将清除给定提供程序的连接池,而 ClearPool 将清除与特定连接相关联的连接池。如果在调用时连接正在使用,将对它们进行相应的标记。连接关闭时,将被丢弃,而不是返回池中。 clearPool的用法http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.clearpool.aspx 如果两个连接串写法不一样,但同指向一个数据库,在连接池里生成的是一个连接吗。例如:connectionString="Server=.;Initial Catalog=amwhmt_Lab;UID=sa;PWD=123" connectionString="Server=.;database=amwhmt_Lab;UID=sa;PWD=123" 增加连接语句:EXEC sp_addlinkedserver @server='DBVIP',--被访问的服务器别名 @srvproduct='', @provider='SQLOLEDB', @datasrc="/Server2" --要访问的服务器EXEC sp_addlinkedsrvlogin 'DBVIP', --被访问的服务器别名 'false', NULL, 'sa', --帐号 'thankyoubobby' --密码 删除连接语句(对应的) sp_droplinkedserver 我用的是。NET的ADO。NET,它维护的连接池是。NET本地的,还是数据库服务器的? 菜鸟提问,高手请答:序号问题。 sql server三表操作 在查询分析器中执行存储过程出错 原本已经能SSL加密的数据包突然间不知道为什么就变成明文了,请大家进来帮忙看看吧 我从一个表里面SELECT查值,再将查出的值INSERT到另一个表里,请问用一句SQL该怎么写啊? sql2005中有多少表怎么算 求一SQL语句,100分 ERP系统与CRM客户系统客户档案实现双向同步 请问:如何在表中实现当前日期时间? 您好,关于BCP命令.... SQL语句有没有办法给一字段填入顺序号(记录号)? 继续请教一个触发器的写法-----在线等
连接池是这么一种机制,当应用程序关闭一个Connection的时候,这个连接被回收,而不是被destroy,因为建立一个连接是一个很费资源的操作。如果能把回收的连接重新利用,会减少新创建连接的数目,显著的提高运行的性能。
假设应用程序需要建立到一个名字为EmpolyeeDB的DataSource的连接。使用连接池得到连接的代码如下:
Context ctx = new InITialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/EmployeeDB");Connection con = ds.getConnection("myPassword", "myUserName");除了逻辑名字以外,我们发现其代码和上面举的例子的代码是一样的。逻辑名字不同,就可以连接到不同的数据库。DataSource对象的getConnection方法返回的Connection是否是一个连接池中的连接完全取决于DataSource对象的实现方法。如果DataSource对象实现与一个支持连接池的中间层的服务器一起工作,DataSource对象就会自动的返回连接池中的连接,这个连接也是可以重复利用的。
是否使用连接池获得一个连接,在应用程序的代码上是看不出不同的。在使用这个Connection连接上也没有什么不一样的地方,唯一的不同是在JAVA的finally语句块中来关闭一个连接。在finally中关闭连接是一个好的编程习惯。这样,即使方法抛出异常,Connection也会被关闭并回收到连接池中去。代码应该如下所示:
try{…
}catch(){…
}finally{ if(con!=null)con.close();}
三、分布式事务:
获得一个用来支持分布式事务的连接与获得连接池中的连接是很相似的。同样,不同之处在于DataSource的实现上的不同,而不是在应用程序中获得连接的方式上有什么不同。假设DataSource的实现可以与支持分布式事务中间层服务器一起工作,得到连接的代码还是如下所示:
Context ctx = new InITialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/EmployeeDB"); Connection con = ds.getConnection("myPassword", "myUserName");由于性能上的原因,如果一个DataSource能够支持分布式的事务,它同样也可以支持连接池管理。
从应用程序设计者的观点来看。是否支持分布式的事务的连接对它来说没什么不同,唯一的不同是在事务的边界上(开始一个事务的地方和结束一个事务的地方),开始一个事务或者结束一个事务都是由事务服务器来控制的。应用程序不应该做任何可能妨碍服务的事情。应用程序不能够直接调用事务提交commit或者回滚rollback操作,也不能够使用事务的自动提交模式auto-commIT mode(在数据库操作完成的时候自动的调用commIT或者rollback)。 欢迎转载,但请保留出处,本文章转自[华软网] 原文链接:http://www.huarw.com/db/dbbbs/MSSQLServer/200106/302289.html
参考
http://msdn.microsoft.com/zh-cn/library/8xx3tyca.aspx
例如:connectionString="Server=.;Initial Catalog=amwhmt_Lab;UID=sa;PWD=123"
connectionString="Server=.;database=amwhmt_Lab;UID=sa;PWD=123"
增加连接语句:
EXEC sp_addlinkedserver
@server='DBVIP',--被访问的服务器别名
@srvproduct='',
@provider='SQLOLEDB',
@datasrc="/Server2" --要访问的服务器
EXEC sp_addlinkedsrvlogin
'DBVIP', --被访问的服务器别名
'false',
NULL,
'sa', --帐号
'thankyoubobby' --密码
删除连接语句(对应的)
sp_droplinkedserver