首页 新闻 会员 周边

.net 数据库连接池

0
悬赏园豆:10 [已解决问题] 解决于 2010-09-07 08:51

我想问下,.net中有没有方法可以看出:

1:当前数据库连接是【新创建】的还是【从连接池复用】的?

2:连接池当前存在的连接数?

3:LINQ TO SQL 怎么看?

随处走走的主页 随处走走 | 初学一级 | 园豆:123
提问于:2010-08-19 16:01
< >
分享
最佳答案
0

我就回答你的第一个问题,第二,三个问题可以用同样的方式解决:

 

Type type = typeof(SqlConnection);
PropertyInfo property
= type.GetProperty("InnerConnection", BindingFlags.NonPublic | BindingFlags.Instance);

SqlConnection conn
= new SqlConnection("Data Source=localhost;Initial Catalog=master;Integrated Security=True");

conn.Open();
object obj = property.GetValue(conn, null);
int hashcode = obj.GetHashCode();
conn.Close();

 

获取到的 hashcode 你可以保存下来,然后每次open连接后,你获取一个 hashcode,如果该 hashcode 已经存在,则表示是从连接池复用的,如果不存在,则是新创建的。

收获园豆:8
Launcher | 高人七级 |园豆:45045 | 2010-08-19 17:40
谢谢,请问LINQ呢? LINQ怎么看?
随处走走 | 园豆:123 (初学一级) | 2010-08-19 19:28
@随处走走:DataContext 有个 public DbConnection Connection { get; },你通过查看此实例的 InnerConnection 属性就可以知道了. 另外还有这个方式: SqlConnection conn =new SqlConnection(); conn.StatisticsEnabled = true; IDictionary statistics = conn.RetrieveStatistics(); 性能计数器选 Net Data Provider for SqlServer ,
Launcher | 园豆:45045 (高人七级) | 2010-08-20 10:39
其他回答(2)
0

1:当前数据库连接是【新创建】的还是【从连接池复用】的?

这个不一定, 如果你使用的数据库连接对象在连接池里面缓存的话, 就先看看连接池里有没有,有的话, 就直接换回链接对象。如果没有那就新建。

2.可以看到,利用性能监视器来监视池来查看

3.Linq2SQL 是套框架、里面封装了对数据库的访问,同样可用2里面的方法查看。




收获园豆:2
HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-08-19 16:21
先谢谢你的回复,让我了解了一种方式 但我的.Net CLR Data,提示没有实例,没办法添加, 请问怎么回事...
支持(0) 反对(0) 随处走走 | 园豆:123 (初学一级) | 2010-08-19 19:29
0

没办法看...

Astar | 园豆:40805 (高人七级) | 2010-08-19 16:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册