报DataReader未关闭错误,请问如何解决?

问题描述

报错:已有打开的与此命令相关联的DataReader,必须首先将它关闭。在这个函数报错:UpdateTable(JewelleryDataSetchangedData,StringtableName,DateTimelastAccessed)代码如下:publicintUpdateTable(JewelleryDataSetchangedData,stringtableName,DateTimelastAccessed){intret=0;stringSqlInfo="";try{if(changedData!=null){switch(tableName){case"AcceptRegister":ret=acceptRegisterTableAdapter.Update(changedData);break;case"BaseInfo":ret=baseInfoTableAdapter.Update(changedData);break;case"Base":ret=baseTableAdapter.Update(changedData);break;case"Branch"://Debugger.Break();ret=branchTableAdapter.Update(changedData);break;case"CheckResult":ret=checkResultTableAdapter.Update(changedData);break;case"Code":ret=codeTableAdapter.Update(changedData);break;case"CustomerInfo":ret=customerInfoTableAdapter.Update(changedData);break;case"DataMaintain":ret=dataMaintainTableAdapter.Update(changedData);break;case"DateInfo":ret=dataInfoTableAdapter.Update(changedData);break;case"GroupInfo":ret=groupInfoTableAdapter.Update(changedData);break;case"Print":ret=printTableAdapter.Update(changedData);break;case"Role":ret=roleTableAdapter.Update(changedData);break;case"User":ret=userTableAdapter.Update(changedData);break;case"UserRole":ret=userRoleTableAdapter.Update(changedData);break;case"Template":ret=templateTableAdapter.Update(changedData);break;case"StoneValue":ret=StoneValueTableAdapter.Update(changedData);break;case"StonePram":ret=StonePramTableAdapter.Update(changedData);break;case"PictrueArgs":ret=pictrueArgsTableAdapter.Update(changedData);break;case"DataUpdateInfo":ret=dataUpdateInfoTableAdapter.Update(changedData);break;}}}catch(SqlExceptionsqlEx){log.Debug(string.Format("AproblemwasencountedupdatingTable:n{0}",sqlEx.ToString()));thrownewSoapException("写入数据库出错",SoapException.ServerFaultCode,"Database");}catch(Exceptionex){log.Debug("行数量"+changedData.CheckResult.Rows.Count.ToString()+"行状态:"+changedData.CheckResult.Rows[0].RowState.ToString()+"重量:"+changedData.CheckResult.Rows[0]["Weight"].ToString()+"图片编号:"+changedData.CheckResult.Rows[0]["PhotoGID"].ToString());log.Debug("Exception:"+ex.ToString());}returnret;}

解决方案

解决方案二:
本帖最后由 net_lover 于 2011-12-01 11:15:11 编辑
解决方案三:
可我的代码里没有用到DataReader啊,我怎么去关闭DataReader呢,我的代码都是用Adaper来把数据装填到DataTable里面啊完整的异常信息如下:Exception:System.InvalidOperationException:已有打开的与此命令相关联的DataReader,必须首先将它关闭。在System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgsrowUpdatedEvent,BatchCommandInfo[]batchCommands,Int32commandCount)在System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgsrowUpdatedEvent,BatchCommandInfo[]batchCommands,Int32commandCount)在System.Data.Common.DbDataAdapter.Update(DataRow[]dataRows,DataTableMappingtableMapping)在System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTabledataTable,DataTableMappingtableMapping)在System.Data.Common.DbDataAdapter.Update(DataSetdataSet,StringsrcTable)在JewelleryDataSetTableAdapters.CheckResultTableAdapter.Update(JewelleryDataSetdataSet)在Jewellery.Web.JewelleryData.UpdateTable(JewelleryDataSetchangedData,StringtableName,DateTimelastAccessed)
解决方案四:
你单步调试看下确定你错误的语句,
解决方案五:
这段代码是是websevice上的,所以只能在log里看到,异常信息很明显了,UpdateTable()函数开始产生异常的,大家帮我看看,我的代码里没有DataReader啊,怎么会报这个错呢
解决方案六:
acceptRegisterTableAdapter哪里来的,前面还调用过什么?
解决方案七:
前面调用过,装填数据的函数里用acceptRegisterTableAdapter把数据装填到表里acceptRegisterTableAdapter是类里声明的。
解决方案八:
大家帮忙看看
解决方案九:
楼主的问题还没看完,但是看到那么多case语句,不禁想让楼主重构下代码,反射也许可以使代码更清晰一点...
解决方案十:
高手大哥们帮忙看看啊!
解决方案十一:
没有close()是一定的
解决方案十二:
每次用完关掉就行了
解决方案十三:
该回复于2011-12-02 07:20:58被版主删除
解决方案十四:
报错:已有打开的与此命令相关联的DataReader,必须首先将它关闭。表示其他地方用到datareader了,记着把它关闭
解决方案十五:
可我代码里没有用到DataReader啊,为马上还会说它打开没有关闭呢,没有用到datareader又如何关闭呢?
解决方案:
ret=pictrueArgsTableAdapter.Update(changedData);跟踪这个方法进去看看...
解决方案:
是update方法如果你的DBHelper方法封装的不好的话,修改数据的方法执行错误后,会出现未关闭DataReader错误
解决方案:
引用15楼zgf_along的回复:

ret=pictrueArgsTableAdapter.Update(changedData);跟踪这个方法进去看看...

这代码是webseveic端的代码没法跟踪啊,只能把需要看的内容写入log里
解决方案:
引用16楼zgf_along的回复:

是update方法如果你的DBHelper方法封装的不好的话,修改数据的方法执行错误后,会出现未关闭DataReader错误

能说的更详细点吗?DBHeplper封装的不好是是吗意思呢,比较菜请多指教!
解决方案:
各位大侠帮帮忙啊

时间: 2024-11-05 14:59:17

报DataReader未关闭错误,请问如何解决?的相关文章

spring mvc-我这个springb报 关于HandlerAdapter的错误求怎么解决

问题描述 我这个springb报 关于HandlerAdapter的错误求怎么解决 重大: Servlet.service() for servlet [SpringMVC] in context with path [/GooMapController] threw exception [No adapter for handler [jp.co.nttdata.goomap.controller.GooMapController@655709bd]: The DispatcherServle

mysql 服务无法启动-mysqld-nt --verbos 一直出现如下错误,请问怎么解决

问题描述 mysqld-nt --verbos 一直出现如下错误,请问怎么解决 mysqld-nt --verbos 图片说明 解决方案 配置文件被你改了?建议重装

asp.net 为什么总是报连接未关闭,求大神解答!!!

问题描述 好几天了,我们老师也没看出来...一直报已有于此相关联的Command对象,请先关闭.贴代码:publicstaticList<ElectronicProductsListModelImpl>getProductCommonInfoByProductName(ElectronicProductsListModelImpleplmi,stringsign){//DBHelperdb=newDBHelper();stringsqlText=string.Empty;SqlConnecti

lotus notes 8.5.3 报log is full错误,如何解决?

问题描述 从启服务器,将log.nsf文件删除,Domino可以启动,但不能从根本上解决问题,一旦邮件附件很大(超过20MB)且群发,容易出现这个问题,每次只能用这个方法暂时解决,请高手赐教如何彻底解决这个问题,谢谢! 解决方案 解决方案二:是服务器磁盘满了还是log的大小有上限?解决方案三:在notes.ini文件中Log的大小是默认设置,没动过.解决方案四:服务器磁盘超大free的有4.4TB解决方案五:当天日志最大长度默认为10KB,不会超过这个了吧,可以将这个参数改大一点解决方案六:感谢

非托管dll-C#调用非托管DLL,报“其他内存已损坏”,请问怎么解决呢?

问题描述 C#调用非托管DLL,报"其他内存已损坏",请问怎么解决呢? 定义: [DllImport("BSEncrypt.dll")] public static extern bool MD5String(ref string instr, int inlen, ref string outstr, int outlen); 调用: String ls_MD5Password = new String('', 100); string as_Password =

用eclipse编程报错没javax.cry这个包,请问如何解决

问题描述 用eclipse编程报错没javax.cry这个包,请问如何解决 用eclipse编程报错没javax.cry这个包,请问如何解决 解决方案 没这个包,就在eclipse里面新建一个就是了,关键是包里面的类需要定义. 解决方案二: 在JRE/lib/ext/sunjce_provider.jar和javax/crypto里面找找

图片-请问:eclipse导出项目后,在用dos命令运行,出现错误,如何解决?谢谢!

问题描述 请问:eclipse导出项目后,在用dos命令运行,出现错误,如何解决?谢谢! 解决方案 jdbc驱动的问题.看看是否缺少库 解决方案二: 导出项目时选上jcdb的jar包,若不在工程中,用java运行jar时要加路径参数,增加jcdbjar包到classpath 解决方案三: jdbc写错了,冇意思

sys-firebug报 &amp;amp;quot;NetworkError: 404 Not Found &amp;amp;quot; 的错误,如何解决呢?

问题描述 firebug报 "NetworkError: 404 Not Found " 的错误,如何解决呢? firebug控制台下报 "NetworkError: 404 Not Found - http://xxx.cn/admin/WebResource.axd" 和"NetworkError: 404 Not Found - http://xxx.cn/admin/ScriptResource.axd" 和ReferenceError:

请问怎么解决下面的错误?关于fpga的

问题描述 请问怎么解决下面的错误?关于fpga的 解决方案 目测最后一行少一个 end 解决方案二: 需要将文件名字设置为工程顶层名字!File -右键---set as Top 解决方案三: 需要将文件名字设置为工程顶层名字!File -右键---set as Top