http://www.cnblogs.com/flora_asp_net/archive/2009/08/07/1541530.html
这个帖子里,数据库访问层(DAL)中的代码:
private static SqlConnection connection;
public static SqlConnection Connection //连接数据库,并打开连接
{
get
{
string connectionString = "server=.\\sql2005;database=TeachSys;uid=sa;pwd=sa2005";
if (connection == null)
{
connection = new SqlConnection(connectionString);
Connection.Open();
}
return connection;
}
}
我 不太赞成一楼和二楼的说法,这个小写的connection 是一个静态的变量,即使反复实例化,也只有一个SqlConnection在开着吧。看看.NET的回收机制就应该知道了吧。
double check 变种.
如果使用 connection(小写) 来 Open 的话,就有可能同时打开多条数据库连接,
而调用 Close 的代码肯定无法准确的知道到底 Open 了几条.
当然,换成 Connection.Open() (大写)后,虽然解决了前面的问题,但是,也不是
线程安全的.
引用Galactica的说法:
如果使用 connection(小写) 来 Open 的话,就有可能同时打开多条数据库连接,
而调用 Close 的代码肯定无法准确的知道到底 Open 了几条.
当然,换成 Connection.Open() (大写)后,虽然解决了前面的问题,但是,也不是
线程安全的.
写错了吧,应该是小写的,但是 声明称static 全局变量似乎有些问题 ,因为它始终存在