当前位置: 首页 > 编程语言 > C#

阅读器关闭时尝试调用元数据无效?分享

时间:2023-04-11 10:50:56 C#

阅读器关闭时调用MetaData的尝试无效?我正在运行来自数据读取器的ifelse语句来查询表数据并激活/停用页面上的某些控件。当我关闭块时,我实现了一个using语句来自动关闭连接和阅读器,但是我的每个ifelse语句仍然会导致阅读器关闭错误。少了什么东西?代码如下:stringcomnt="SELECTStatusIdFROMSubmissionWHERESubmissionId="+x;使用(SqlConnectioneditConn=newSqlConnection(connectionString)){editConn.Open();使用(SqlCommandstatCmd=newSqlCommand(comnt,editConn)){SqlDataReaderdr=statCmd.ExecuteReader();读博士();如果(dr.GetInt32(0)>0){PanelComment.Visible=true;PanelQuote.Visible=false;LnbFid.Visible=false;LnbCrim.Visible=false;LnbEo.Visible=false;LnbEpl.Visible=false;LnbNot.Visible=false;LnbPriv.Visible=false;LnbPub.Visible=false;}else{PanelComment.Visible=false;}}您的查询没有返回任何结果。如果您不确定您的查询是否会返回任何数据,请习惯以下结构:while(dr.Read())//当有数据要读取时将返回true。{...}试试这个:if(dr.HasRows){while(dr.Read()){if(dr.GetInt32(0)>0){...}}}查看此页面了解更多信息:用DataReader获取数据好像select语句没有返回行,当你第一次调用dr.Read()时,数据读取器不会关闭,因为使用了数据读取器,我们总是显示usingif或者像leniel说的using(SqlCommandstatCmd=newSqlCommand(comnt,editConn)){SqlDataReaderdr=statCmd.ExecuteReader();if(dr.Read())if(dr.GetInt32(0)>0){PanelComment.Visible=true;PanelQuote.Visible=false;LnbFid.Visible=false;LnbCrim.Visible=false;LnbEo.Visible=false;LnbEpl.Visible=false;LnbNot.Visible=false;LnbPriv.Visible=false;LnbPub.Visible=false;=假;由于读者姓名不匹配,我遇到了这个问题。即SqlCommandsqlmd=newSqlCommand();SqlDataReadersqldr=sqlmd.ExecuteReader();while(sqldr.Read()){idd=(int)rdr["Id"];后来我替换了代码idd=(int)sqldr["Id"];错误已解决。如果(conn.State==ConnectionState.Closed)conn.Open();SqlCommandqr1=newSqlCommand("从jwOndropExecButtonS选择TransID、FType、FldName、LTrans、OnCCBeforeLoad、LTop、LLeft、LWidth、LHeight、LFColor,其中active='T'andMyType=''andLTrans='"+TmpRajTransID+"'按dbo.val(TransID)排序",conn);SqlDataReaderd1=qr1.ExecuteReader();while(d1.Read()){if(d1.HasRows){stringMrFldName=d1["FldName"].ToString().Trim();如果(d1["OnCCBeforeLoad"].ToString().Trim()=="Clr")ClearValueandToolTipforFieldName(MrFldName);如果(d1["LTop"].ToString().Trim()!="")DisplaySetTopValue(MrFldName,d1["LTop"].ToString().Trim());如果(d1["LLeft"].ToString().Trim()!="")DisplaySetLeftValue(MrFldName,d1["LLeft"].ToString().Trim());如果(d1["LWidth"].ToString().Trim()!="")DisplaySetWidthValue(MrFldName,d1["LWidth"].ToString().Trim());如果(d1["LHeight"].ToString().Trim()!="")DisplaySetHeightValue(MrFldName,d1["LHeight"].ToString().Tr我是());如果(d1["FType"].ToString().Trim()=="可见")ShowTextBoxWithFldName(MrFldName);如果(d1["FType"].ToString().Trim()=="InVisible")HideandClearTextBoxWithFldName(MrFldName);如果(d1["FType"].ToString().Trim()=="InNVisible")HideOnlyTextBoxWithFldName(MrFldName);if(d1["FType"].ToString().Trim()=="Enable")SetEnableforFieldName(MrFldName);如果(d1["FType"].ToString().Trim()=="禁用")SetDisableforFieldName(MrFldName);}}d1.Close();如果(conn.State==ConnectionState.Open)conn.Close();如果(d1["FType"].ToString().Trim()=="Visible")说以后找不到元数据,我偶尔会遇到同样的错误我发现阅读器没有关闭,但是ASP.NET程序使用太多内存自动关闭阅读器。它主要取决于SQLServer阶段。如果是一般错误,请检查您的连接。以上是C#学习教程:InvalidattempttocallMetaDatawhenreaderisclosed?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: