问一个asp.net中数据库反复开关的问题 比如有一百个用户连接到服务器浏览网页,当第一个用户打开数据库还没有关的时候,第二个就要打开,这时候不会出错吗?不会产生数据库的排它性吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sql server默认的连接池数是100,可以通过数据连接字符串设置数量,在connectstring中加上Max Pool size=200设置。 数据本身也有锁机制,看你是什么样的数据库操作,比如insert, update, delete都是表级锁,等等 注意连接池不是用来程序同时共享数据库联结的,而是让程序分享“剩下”的数据库连接。假设有程序 A、B、C 都使用同一数据库,这要开启三个联接,然后程序将连接放回连接池并且确保不在使用已经放回的连接,此连接才会被其它程序使用。SQLConnection是使用连接池的,所以如下的代码可以确保正确使用数据库连接:using(DBConnection cnn1=new SQLConnection(connStr)){....} //这可以确保cnn1.Close();using(DBConnection cnn2=new SQLConnection(connStr)){....} //这可以确保cnn2.Close();cnn1和cnn2可能使用同一数据库物理连接,也可能使用两个独立的,你写程序的时候不用去管,这是由new SQLConnection()来自动维护的,只要记得每一次都创建新的逻辑连接并且确保及时关闭逻辑连接即可。有一种很混乱的说法,说有了连接池就可以让物理连接给多个程序同时使用了,这是与实际情况背道而驰的。 所以当有100个用户程序实例使用同一数据库,程序总有个快慢之分,也许第20个用户的new SQLConnection()使用的就是第10个用户刚刚释放的物理连接。有人错误地认为连接池就是共享物理连接,结果就出现了自以为高效的写法,就是将逻辑连接持续打开,给多用户程序共享。数据库连接不是线程安全的,即使在同一线程里也不能逻辑上混用,例如你打开一个DBDatareader不关闭它(或者它的连接)紧接着让这个连接给其它的DbAdapter、DBCommand或者DBDataReder使用,就无法正常使用。连接池正式因为数据库物理连接既不能共享又想缓冲区所以才想出的办法。 RadioButtonList如何绑定图片 编号问题 ASP.NET-->页面上的图片登录后才显示 asp.net里操作word.关于改写模式?(在线等待,菜鸟跪求) asp.net web 能用ActiveX来处理客户端的一些图片之类么?详见内 关于HOOK设置线程钩子 后台打开窗口问题,急等 高人救救我这穷鬼拉........... 百万级数据,查询都有什么方法? 怎样把子类实例瘦身后传给父类指针或对象? 如何在.NET Framework 1.1实现codebehind AspNetPage分页问题
等等
{
....
} //这可以确保cnn1.Close();
using(DBConnection cnn2=new SQLConnection(connStr))
{
....
} //这可以确保cnn2.Close();cnn1和cnn2可能使用同一数据库物理连接,也可能使用两个独立的,你写程序的时候不用去管,这是由new SQLConnection()来自动维护的,只要记得每一次都创建新的逻辑连接并且确保及时关闭逻辑连接即可。有一种很混乱的说法,说有了连接池就可以让物理连接给多个程序同时使用了,这是与实际情况背道而驰的。