运行程序后,数据库显示连接人数2。我程序中每打开个连接最后都关闭了呀。。请各位教我。谢谢。
解决方案 »
- 关于treenode的tag属性
- 【大家都有分】通过vs里面的webBrowser怎么来模拟点击这样的东西.?
- 非常菜鸟的问题
- stuSex varchar(15)not null add constraint ck_stuSex check(stuSex like '男'or '女'
- 一个关于分页的奇怪问题,
- ExecuteNonQuery的问题
- 重构代码 真是一个 既枯燥又耗时间的工作
- rdlc报表生成图片问题。
- vs.net 2005 关于路径的形式不合法的错误
- 如何让richTextBox支持鼠标双击事件?
- DBhelper异常求高人解决 在线等
- 求助!我的VS代码全删掉,Ctrl+F5也能运行出来
private void Button1_Click(System.Object sender, System.EventArgs e)
{
propInnerConn = typeof(SqlConnection).GetProperty("InnerConnection", BindingFlags.NonPublic | BindingFlags.Instance);
object objInnerConn1 = null;
object objInnerConn2 = null; using (SqlConnection cn1 = new SqlConnection(strConn)) {
cn1.Open();
objInnerConn1 = propInnerConn.GetValue(cn1, null);
cn1.Close();
}
using (SqlConnection cn2 = new SqlConnection(strConn)) {
cn2.Open();
objInnerConn2 = propInnerConn.GetValue(cn2, null);
cn2.Close();
} if ((object.ReferenceEquals(objInnerConn1, objInnerConn2))) {
MessageBox.Show("创建的两个数据库连接,其内部连接是一样的!", "比较结果", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
上面这个例子创建了两个连接,都关闭了,这两个连接的内部连接都还存在,而且是一样的。
这应该能让你理解了吧,在默认情况下,连接池是启用的。Close实际上没有关闭真正的物理连接,而是逻辑关闭,这些连接的内部连接都被放入池中,继续使用。
确认是否真正再次利用了同一内部连接,可以使用.NET Reflection中的功能以可编程方式访问私有InnerConnection属性的内容
http://blog.163.com/henan_lujun/blog/static/19538333200781715121731/