您的位置:程序门 -> .net技术 -> c#



求教the connection is already open.错误


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求教the connection is already open.错误
发表于:2007-12-07 11:52:12 楼主
请教高手

当我在ie中执行一个复杂数据库操作时(一般需要3分钟以上才能算完),关闭ie
然后再开一个新ie执行conn.open()连接数据库时系统报错:

应用程序中的服务器错误。
the   connection   is   already   open.
system.invalidoperationexception:   the   connection   is   already   open.  

mysqlcommand   comm   =   new   mysqlcommand(strsql.tolower(),conn);
conn.open();
mysqldatareader   dr;

因为这边的应用是一个多人并行操作的web系统,如何解决这种问题呢?
发表于:2007-12-07 11:55:041楼 得分:0
在执行时,判断连接是否打开,如果打开,就不用再打开了。如果没打开,就执行打开。
一般在操作数据库时,都是默认使用了连接池,而不用管这些东西的了。
发表于:2007-12-07 11:55:122楼 得分:0
过几分钟以后再刷新报错的页面,就可以得到正确的信息了

或许是连接池?排队或者是数据库的并发机制需要修改???

有没有碰到过类似的情况?能否介绍一下,非常感谢!
发表于:2007-12-07 11:57:583楼 得分:0
现在想解决的是并发,并发的用户很多,如果一个用户执行复杂操作,其他用户就完全不能用了哦
lovvver,不再打开,那不就是其他用户无法使用了吗?
默认的连接池在普通操作过程中是可以的,但是在耗时较长的复杂操作中不太适用
发表于:2007-12-07 13:24:414楼 得分:0
是不是你的datareader   没有关闭啊,datareader   没关闭的话它会一直占用连接的。
发表于:2007-12-07 14:37:015楼 得分:0
为了通用,代码里面的数据库操作全部用采用组件方式
组件外部没有直接数据库访问的
组件里面的数据库操作都关闭了连接,有conn.close()语句
而且极少使用datareader,我的这部分程序里面就没有任何datareader对象


快速检索

最新资讯
热门点击