请教高手!这种提示是什么意思?

yxxue 2008-08-06 03:59:43
<script language="C#" type="text/C#" runat="server">
private void page_load(object sender, EventArgs e)
{
string Userid = Request.QueryString["userid"];
string filename = Request.QueryString["Filename"];
string ConnSql = System.Configuration.ConfigurationManager.AppSettings["SqlConnection"];
SqlConnection conn = new SqlConnection(ConnSql);
string sql = "select img2 from hls where userid='" + Userid + "'";
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
string newimg2 = "test_a.jpg";
sql = "update hls set img2='" + newimg2 + "' where userid='" + Userid + "'";
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
}
dr.Close();
}
</script>

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

源错误:


行 24: sql = "update hls set img2='" + newimg2 + "' where userid='" + Userid + "'";
行 25: cmd = new SqlCommand(sql, conn);
行 26: cmd.ExecuteNonQuery(); --------------------->出错行
行 27: }
行 28: }

难道必须先把dr关闭了重新打开才可以继续操作数据库吗?
...全文
116 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiang_jiajia10 2008-08-06
  • 打赏
  • 举报
回复
解决方法: 两个DataReader用不同的SqlConnection,Command;

注意: DataReader依托于SqlConnection,如果SqlConnection关闭了,DataReader也就自动消亡了~
wlj11111 2008-08-06
  • 打赏
  • 举报
回复
private void page_load(object sender, EventArgs e)
{
string Userid = Request.QueryString["userid"];
string filename = Request.QueryString["Filename"];
string ConnSql = System.Configuration.ConfigurationManager.AppSettings["SqlConnection"];
SqlConnection conn = new SqlConnection(ConnSql);
string sql = "select img2 from hls where userid='" + Userid + "'";
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
dr.Close();

string newimg2 = "test_a.jpg";
sql = "update hls set img2='" + newimg2 + "' where userid='" + Userid + "'";
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
}

} //看看应该可以
Krismeng 2008-08-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yxxue 的回复:]
看来真是没办法啊,只有关闭再打开了~~~痛苦啊
随便给大家看看我的新站,别骂我啊 http://www.seeis.cn
[/Quote]
这是什么网站?一句话?
soldierluo 2008-08-06
  • 打赏
  • 举报
回复
不好意思。搞错,datereader是独占一个链接的,你要分两个语句来执行
soldierluo 2008-08-06
  • 打赏
  • 举报
回复
sql = "update hls set img2='" + newimg2 + "' where userid='" + Userid + "'";
sql = "update hls set img2='" + newimg2 + "' where userid=" + Userid ;
id是int吧
yxxue 2008-08-06
  • 打赏
  • 举报
回复
我看到有两位5个角的高手都让我加!IsPostBack,和这个有关系吗?
include_me 2008-08-06
  • 打赏
  • 举报
回复
!IsPostBack
yxxue 2008-08-06
  • 打赏
  • 举报
回复
看来真是没办法啊,只有关闭再打开了~~~痛苦啊
随便给大家看看我的新站,别骂我啊 http://www.seeis.cn
szjstar 2008-08-06
  • 打赏
  • 举报
回复
五楼说的不错..因为上一个连接已经占用,没有关完备就再次作用,所以提示出错
fengfeng1985 2008-08-06
  • 打赏
  • 举报
回复
cmd 正在被用着,还怎么NEW啊~
新定义个COMMAND
lunber 2008-08-06
  • 打赏
  • 举报
回复
if (dr.Read())
{
conn.Close();
……
conn.Open();
……
}
加上这句就可以了,原因是连接已经占用,没有关闭就再次使用
yangpeiyu 2008-08-06
  • 打赏
  • 举报
回复

private void page_load(object sender, EventArgs e)
{
string Userid = Request.QueryString["userid"];
string filename = Request.QueryString["Filename"];
string ConnSql = System.Configuration.ConfigurationManager.AppSettings["SqlConnection"];
SqlConnection conn = new SqlConnection(ConnSql);
string sql = "select img2 from hls where userid='" + Userid + "'";
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
dr.Close();
string newimg2 = "test_a.jpg";
sql = "update hls set img2='" + newimg2 + "' where userid='" + Userid + "'";
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
}
else
dr.Close();
}


这样试试
北京的雾霾天 2008-08-06
  • 打赏
  • 举报
回复
DataReader是独占一个Connection的,ExecuteNonQuery不能和DataReader共用一个。你需要换一个操作思路。

比如你可以先把数据都读出然后闭关连接再更新。
yangpeiyu 2008-08-06
  • 打赏
  • 举报
回复
还有你加个
if (!this.IsPostBack){}
yangpeiyu 2008-08-06
  • 打赏
  • 举报
回复
楼主是不是在别的页面打开 DataReader没有关闭掉,

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧