你们的意思是不是这样,每次要访问数据库的时候都new一个conn? using (SqlConnection conn = new SqlConnection( "Server=127.0.0.1;Database=gps_s1;uid=sa;pwd=235;Pooling=true;Max Pool Size=100;Min Pool Size=2;")) { conn.Open(); //做自己东西 conn.Close(); }
楼上的,我的windows服务需要不断的操作数据库,一秒钟可能会查询几百次,我就怕不断的open和close影响性能,不知道我上面所发的连接池代码是否可行,能解决这个问题? using (SqlConnection conn = new SqlConnection( "Server=127.0.0.1;Database=gps_s1;uid=sa;pwd=235;Pooling=true;Max Pool Size=100;Min Pool Size=2;")) { conn.Open(); //做自己东西 conn.Close(); }
2:一般需要用连接池来解决,连接池很简单,只要在连接字符串加pool = true;
3: 每次客户端清楚就分配一个connection给它,放心连接池会处理你担心的一切问题:
a 连接对象缓存
b 线程安全希望对你有启发!
2: 线程a 线程b
con.begintrans
con.dosomething
con.begintrans
con.dosomething
con.committrans
con.committrans
想想会出现什么后果!
同步一下connection就行了啊!你说还有什么后果,你以前一根connection允许你异步开启几个事务啊?
看错了,不加锁或mutex是有问题。
"Server=127.0.0.1;Database=gps_s1;uid=sa;pwd=235;Pooling=true;Max Pool Size=100;Min Pool Size=2;"))
{
conn.Open();
//做自己东西
conn.Close();
}
"Server=127.0.0.1;Database=gps_s1;uid=sa;pwd=235;Pooling=true;Max Pool Size=100;Min Pool Size=2;"))
{
conn.Open();
//做自己东西
conn.Close();
}
2 连接池会保持一定水平的连接对象。
3 第一次访问会创建一个或n个存入连接池,以后每次new SqlConnection,连接池根本就不创建,直接从连接池拿一个。
4 conn.Close 不是真的释放了,而是和你访问线程脱离而已,它还保留在连接池,只是做了些状态恢复什么。