出错在哪?已有打开的与此命令相关联的 DataReader,必须首先将它关闭...有难度

网上下的源码调试不成功C#/.NET2。0的大师们看下代码错在哪怎么改善运行成功了我补够50分意思下........publicpartialclassadmin_sub... 网上下的源码 调试不成功
C#/.NET 2。0的大师们看下代码错在哪怎么改善
运行成功了我补够50分意思下.....
...
public partial class admin_subject_modify : System.Web.UI.Page
{
private OleDbConnection connection = new conn().CreateConnection();
protected void Page_Load(object sender, EventArgs e)
{
function.check();
string id = Request["id"].ToString();
try
{

OleDbCommand OleCmd = new OleDbCommand("SELECT [Subject],[qx] FROM XH_Subject WHERE [ID]=" + id, connection);
OleDbDataReader OleDr = OleCmd.ExecuteReader();
while (OleDr.Read())
{
subject.Text = OleDr.GetString(0).Trim();
qx.Text = OleDr.GetDateTime(1).ToString("yyyy-MM-dd HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo);

}

}
finally
{
connection.Close();
}
}

protected void save_Click(object sender, EventArgs e)
{
string id = Request["id"].ToString();
if (id == null || id == string.Empty)
{
function.showErr("参数值为空", Response, Request);
}
try
{

if (connection.State == ConnectionState.Closed)
{
connection.Open();
}

OleDbCommand OleCmd = new OleDbCommand("UPDATE XH_Subject SET [Subject]=\"" + function.nohtml(subject.Text.Trim()) + "\",[qx]=\"" + function.nohtml(qx.Text.Trim()) + "\" WHERE [ID]=" + id, connection);
OleDbDataReader OleDr = OleCmd.ExecuteReader();
OleCmd.ExecuteNonQuery(); //错在这儿 提示说 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
OleCmd.Dispose();

}
finally
{
connection.Close();
}

function.successMsg("修改成功了>>>>>>>.");
}

}

---------------------------------------------
已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。

源错误:

行 59: OleDbCommand OleCmd = new OleDbCommand("UPDATE XH_Subject SET [Subject]=\"" + function.nohtml(subject.Text.Trim()) + "\",[qx]=\"" + function.nohtml(qx.Text.Trim()) + "\" WHERE [ID]=" + id, connection);
行 60: OleDbDataReader OleDr = OleCmd.ExecuteReader();
行 61: OleCmd.ExecuteNonQuery();
行 62: OleCmd.Dispose();
行 63:
while (OleDr.Read())
{
****
}
OleDr.Close() ;
这样子错误提示一样 还是说没关掉
展开
 我来答
百度网友a201cc9
2009-05-30 · TA获得超过349个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:284万
展开全部
用完OleDr.Read()之后记得将其关闭,语句为OleDr.Close()

在你的每一个 while (OleDr.Read()) 循环结束后都加上这句OleDr.Close()
第二个方法里:
OleDbDataReader OleDr = OleCmd.ExecuteReader();
OleCmd.ExecuteNonQuery(); //错在这儿 提示说 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。

OleDbDataReader OleDr = OleCmd.ExecuteReader();这一句有什么用,有下面这一句OleCmd.ExecuteNonQuery(); 把那个OleDbDataReader OleDr = OleCmd.ExecuteReader();这句删了,应该是它与下面那句冲突了
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式