多人同时访问,出错

问题描述

以下是dbconn.cs的内容:usingSystem;usingSystem.Web;usingSystem.Data;usingSystem.Data.OracleClient;usingSystem.Collections;namespacedbconn{publicclassDA{staticOracleConnectionm_conn=null;publicDA(){}publicstaticDataTable查询数据库(string查询语句){OracleConnectionmyConnection=创建连接();DataTabledt=newDataTable();OracleDataAdapterda=newOracleDataAdapter(查询语句,myConnection);da.Fill(dt);myConnection.Close();returndt;}publicstaticOracleConnection创建连接(){if(m_conn==null)m_conn=newOracleConnection("userid=abc;datasource=orasvr;password=123");returnm_conn;}publicstaticint更新数据库(string更新语句){OracleConnectionConn=创建连接();OracleCommandComm=newOracleCommand(更新语句,Conn);OracleTransactiontrans=null;inti=0;try{Comm.Connection.Open();trans=Conn.BeginTransaction();Comm.Transaction=trans;i=Comm.ExecuteNonQuery();trans.Commit();}catch{trans.Rollback();i=0;//throw;}finally{Comm.Connection.Close();}returni;}}}以下是调用页面的代码:stringSQL="SELECTshdwFROMT_chukudanwhereno='"+no1+"'";DataTabledt;dt=DA.查询数据库(SQL);一个人,同一时间,访问一个页面,没有问题,如果一个人或多个人,同时访问2个以上的页面,就会出现数据库连接已关闭的错误我大概分析出来是什么原因,但是不知道怎么用C#语言来改DA.查询数据库(SQL);是静态的,大家共用的,第一个人查询完,需要关闭数据库连接的时候,第二个人再查询,就出错了。

解决方案

解决方案二:
publicstaticDataTable查询数据库(string查询语句){OracleConnectionmyConnection=创建连接();DataTabledt=newDataTable();OracleDataAdapterda=newOracleDataAdapter(查询语句,myConnection);da.Fill(dt);myConnection.Close();returndt;}好像数据库没有打开
解决方案三:
staticOracleConnectionm_conn=null;这句:OracleConnection不能用静态的,否则会有并发性问题。
解决方案四:
慎用staticstatic类型的对象是共用的
解决方案五:
静态成员初始化及静态够着函数只会在第一次调用时执行,那么我们来看下你的程序执行情况:第一个人打开网站(第一次调用哪个):(1)m_conn=null;(2)在创建连接()方法中m_conn被实例化(3)更新数据库(string更新语句)更新后m_conn断掉了,而且m_conn!=null,OracleConnectionmyConnection=创建连接();//这种方式并没有创建新的链接对象,而是把创建连接()返回链接对象的引用给了myConnection第二个人打开网站:(1)staticOracleConnectionm_conn=null;//这句不在执行,静态成员初始化只会在第一次调用时进行;(2)此时m_conn!=null,并且这个链接已经被关闭了,在open的时候肯定打不开了
解决方案六:
引用3楼net_lover的回复:

慎用staticstatic类型的对象是共用的

+
解决方案七:
如果去掉static这个关键字,调用的时候就出错了,那应该如何写呢。
解决方案八:
去掉方法外的哪个Connection定义,直接写在publicstaticOracleConnection创建连接(){OracleConnectionm_conn=newOracleConnection("userid=abc;datasource=orasvr;password=123");returnm_conn;}就可以了。
解决方案九:
也就是不要用成员变量,非静态的成员变量需要new出类的实例才能用的,所以你会出错。
解决方案十:
该回复于2011-12-22 10:12:23被版主删除

时间: 2024-11-09 00:38:14

多人同时访问,出错的相关文章

如何解决PPT打不开提示访问出错

  解决PPT打不开提示访问出错的方法一 1.错误以弹窗方式出现,而且文档自动关闭; 2.如果你点击"修复",则出现无法访问,如下图: 3.只需右击打不开的PPT文件,点击"属性"→"解除锁定"→"确定"即可. 原因:此文件来自其他计算机,而我们本身的系统是WIN7的,可能被阻止以帮助保护计算机.这个方法只能临时解决. 解决PPT打不开提示访问出错的方法二 1.打开IE浏览器,点工具菜单,点Internet选项,然后选择&qu

PPT打不开提示访问出错怎么办

  最近,有一位网友向小编求助:他从网上下载的ppt文档打不开,弹出的提示框显示:提示访问出错.ppt内容有问题.按照提示框要求进行了修复,PPT还是打不开,该怎么办呢?而最神奇的事情就是,该PPT在别的同事的电脑是打得开的,而在该网页的电脑却打不开.下面,小编给大家讲一下遇到PPT打不开的解决方法! PPT PPT打不开提示:访问出错.ppt内容有问题的解决方法: 1.错误以弹窗方式出现,而且文档自动关闭; 2.如果你点击"修复",则出现无法访问,如下图: 3.只需右击打不开的PPT

ldap php-php ldap 连接 访问出错

问题描述 php ldap 连接 访问出错 Unable to bind to server: Can't contact LDAP server 解决方案 先php服务器上试下能不能连上ldap,能连上就程序问题.不能,就看下网络,防火墙等

局部变量-DELPHI嵌套过程的调用由外部中转了一次后变量访问出错,请教如果写才对

问题描述 DELPHI嵌套过程的调用由外部中转了一次后变量访问出错,请教如果写才对 procedure c(Fun:pointer); type F=procedure(s:string); begin F(Fun)('c say test'); end; procedure a(); var s1:string; procedure b(s:string); begin s1:=s; //此处内存访问出错,请教,该如何改? 如果s1仍保持是a()的局部变量是否有其他方法解决? end; beg

阿里云服务器1M的带宽能承受多少人同时访问?可随时升级

看见好多新手都在问阿里云服务器1m的带宽到底能承受多少人在线 ,今天我就来简单的说一下吧! 关于这个问题,有很多人纠结,阿里云目前最低配置的主机是69元49.5元一月(年付690元495元),这个配置只有1M带宽,够用吗? 最新阿里云活动一年330元 新用户专享199一年 购买前请先领取阿里云幸运券 当然 前期没有流量 可以不用升级带宽 阿里云带宽可以随时升级,并且不影响网站访问!加带宽的话 1M就是20元 整体还是不贵的! 1M带宽理论上下载速度最高能达到120Kb/s,正常情况在90-100

PPT文档打不开提示访问出错怎么办

  最近从网上下载了一些PPT格式的文件,后缀名有.ppt 也.pptx的两种不同版本的文件,打开始终出现:PowerPoint发现 **.ppt中的内容有问题.PowerPoint可尝试修复此演示文稿.如果您信任此演示文稿的来源,请单击"修复".让同事在他们自己电脑上,都是可以打开的,就我的电脑不能打开,很是郁闷 1.错误以弹窗方式出现,而且文档自动关闭,如下图: 2.如果你点击"修复",则出现无法访问,如下图: 3.只需右击打不开的PPT文件,点击"属

Spring3.0+Hibernate3.3 数据库访问出错。

问题描述 我使用Spring3.0+Hibernate3.3作为后台DAO访问数据库,其中我的dao都继承HibernateDaoSupport来的.然后我在jsp中调用publicvoidsave(ModuleDatiQuestiontransientInstance){log.debug("savingModuleDatiQuestioninstance");try{getHibernateTemplate().save(transientInstance);log.debug(&

jsp访问出错!

问题描述 本人准备做小项目自己玩玩.却出现这样的问题.环境配置:eclipse3.2.1+myeclipse5.5+tomcat5.5,tomcat启动没有问题.访问login.jsp就出如下问题!看错误像是找不到FacesServlet,但是j2ee自带的jar中已经包含,jsf-api.jar,jsf-impl.jar两个包,commons-digester.jar这个是自己加进去的!错误如下!typeExceptionreportmessagedescriptionTheserverenc

Eclipse 内部启动 Tomcat,浏览器访问出错的解决方法

 在Eclipse里面配置好Tomcat服务器后,start server成功后,在浏览器输入http://localhost:8080/, 出现404错误,无法看到正常的tomcat页面. 主要原因是eclipse里面的tomcat server配置问题, 在server中双击已经添加的服务器"Tomcat v7.0 Server @ localhost" 得到显示界面overview(概述)里面的Server Locations,选中下面的第2选项:     . Use works