兄弟们帮我看一下一个比较奇怪的问题!解决就给分!急!急!急!急!急!急!

WantGoWorld 2004-05-11 12:02:51
做的一个WEB应用程序,使用的.NET框架是1.1版本的,更个项目中就没有用到DataReader类,只是用到DataSet和DataTable类,及事务处理。但是当有很多用户使用时,出现了如下错误信息:
"There is already an open DataReader associated with this Connection which must be closed first"

执行的代码是:
SqlConnection conn= new SqlConnection("数据库连接字符串");
conn.BeginTransaction();
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = conn;
sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
sqlCmd.CommandText = "存储过程名称";

sqlCmd .ExecuteNonQuery() --发生了上面的异常信息

请问那位大侠知道是问题产生的原因啊?
谢谢!!
...全文
36 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbzxf 2004-05-14
  • 打赏
  • 举报
回复
不一定就是这个页面发生错误,检查新作的函数察看是否有未释放的资源
cbj 2004-05-14
  • 打赏
  • 举报
回复
你的代码中和数据库的连接(conn)没有关闭就再次打开了

SqlCommand取数据就是用DataReader呀,所以虽然你没有调用,系统已经调用了
KOON 2004-05-14
  • 打赏
  • 举报
回复
是否有自己忘记的函数或类混进了包含的文件中,导致这个情况
taijl518 2004-05-14
  • 打赏
  • 举报
回复
我看异常好像是说DataReader、sqlconnection已经打开,需关闭后,才能打开
yjtc 2004-05-14
  • 打赏
  • 举报
回复
权限,sql语句
WantGoWorld 2004-05-14
  • 打赏
  • 举报
回复
谢谢各位!
我上面写的代码不是真正使用的代码,只是一个说明,在那里出现了问题!真正使用中确实是正确的代码。我弄不明白的是,出现:“There is already an open DataReader associated with this Connection which must be closed first”,异常的原因!
dreammaster 2004-05-14
  • 打赏
  • 举报
回复
能看看你有页面中调用时的语句吗?

这个问题也许不在这里,WebApp对于所有上来的人来说是同一个应用,即,你定义一个静态的类,所有用户上来使用的是同一个,不会像C/S每个不同机上有不同的内容,所以在调用中可能出现这样或那样的问题.

举个最明显的例子,即用一个同一个静态数据操作类去操作数据,这时有人在Update,有人在Fill一定会出现这种问题,当然在别的情况下也会出现这类问题.
redebug 2004-05-14
  • 打赏
  • 举报
回复
//sqlCmd .ExecuteNonQuery() --发生了上面的异常信息

这样测试一下,在掉上面一句时,给sqlCmd.Connection 一个新的SqlConnect,就应该不会再报错了,

sqlcommand在执行sql命令或存储过程时,系统也是在调用SqlDataReader在取回返回值。
aboush 2004-05-11
  • 打赏
  • 举报
回复
transaction没有commit或是rollback.
acewang 2004-05-11
  • 打赏
  • 举报
回复
public void RunSqlTransaction(string myConnString)
{
SqlConnection myConnection = new SqlConnection(myConnString);
myConnection.Open();

SqlCommand myCommand = myConnection.CreateCommand();
SqlTransaction myTrans;

// Start a local transaction
myTrans = myConnection.BeginTransaction("SampleTransaction");
// Must assign both transaction object and connection
// to Command object for a pending local transaction
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans;

try
{
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
try
{
myTrans.Rollback("SampleTransaction");
}
catch (SqlException ex)
{
if (myTrans.Connection != null)
{
Console.WriteLine("An exception of type " + ex.GetType() +
" was encountered while attempting to roll back the transaction.");
}
}

Console.WriteLine("An exception of type " + e.GetType() +
" was encountered while inserting the data.");
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}
}

62,052

社区成员

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

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

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

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