请教一个关于DATAREADER的小问题?
下面的代码运行的时候为什么老是提示我:DataReader未关闭?可我已经关闭了呀!
==============================================
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["sqlConn"]);
myConnection.Open();
// 启动一个事务
SqlTransaction myTrans = myConnection.BeginTransaction();
SqlDataReader dr;
// 为事务创建一个命令
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans;
try
{
//获取题型名称
myCommand.CommandText = string.Format("select C_TypeClassName from tbl_TypeName where I_TypeNameID = {0}",typeNameID);
dr = myCommand.ExecuteReader();
if (dr.Read())
{
strTypeName = dr.GetString(0);
}
if (!dr.IsClosed)
{
dr.Close();
}
//修改科目相应统计信息
myCommand.CommandText = string.Format("select I_TKKMID,C_Statistic from tbl_TKKMBase where I_TKKMID = {0} or C_ChildIDs like '%' + {0} + '%'", tkkmID);
dr = myCommand.ExecuteReader();
while (dr.Read())
{
strTKKMID += dr.GetInt32(0).ToString() + ",";
strStatistic += dr.GetString(1) + ",";
}
if (!dr.IsClosed)
{
dr.Close();
}
myTrans.Commit();
flag = 1;
}
catch (Exception e)
{
myTrans.Rollback();
throw (e);
}
finally
{
myConnection.Close();
}
==============================================
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["sqlConn"]);
myConnection.Open();
// 启动一个事务
SqlTransaction myTrans = myConnection.BeginTransaction();
SqlDataReader dr;
// 为事务创建一个命令
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans;
try
{
//获取题型名称
myCommand.CommandText = string.Format("select C_TypeClassName from tbl_TypeName where I_TypeNameID = {0}",typeNameID);
dr = myCommand.ExecuteReader();
if (dr.Read())
{
strTypeName = dr.GetString(0);
}
if (!dr.IsClosed)
{
dr.Close();
}
//修改科目相应统计信息
myCommand.CommandText = string.Format("select I_TKKMID,C_Statistic from tbl_TKKMBase where I_TKKMID = {0} or C_ChildIDs like '%' + {0} + '%'", tkkmID);
dr = myCommand.ExecuteReader();
while (dr.Read())
{
strTKKMID += dr.GetInt32(0).ToString() + ",";
strStatistic += dr.GetString(1) + ",";
}
if (!dr.IsClosed)
{
dr.Close();
}
myTrans.Commit();
flag = 1;
}
catch (Exception e)
{
myTrans.Rollback();
throw (e);
}
finally
{
myConnection.Close();
}
...全文
相关推荐
已有打开的与此命令相关联的DataReader,必须首先将它关闭。对于此异常的理解
今天与大家分享一下 已有打开的与此命令相关联的DataReader,必须首先将它关闭。这个异常的个人理解
用DataReader还是DataSet?
ADO.NET提供了两个主要的类来读取数据。通过本文我们可以学习如何在两者之间进行选择。 我经常听到有人问这个问题:“在ASP.NET Web应用程序中我应该用DataReader类还是DataSet类呢?”在很多文章以及新闻组的贴子中我经常看到这样的误解,即认为DataReader(SqlDataReader或OleDbDataReader的缩写)比DataSet好。有时候我也会看到相反的说法。事实上,Microsoft创建了这两个数据存取类是因为它们都是我们所需要的。每个类都有其优点和不足,你可以根据应用环境来选择用哪一个。 本文就两者的选择问题做了很清楚的讲述,可以让你在运用ASP.N
把DataReader转换成DataTable的方法
把DataReader转换成DataTable的方法 把DataReader转换成DataTable的方法
DataReader和DataSet的区别
总结了一些DataReader和DataSet一些特征和用法上的区别
DATASET 与 DATAREADER对象有什么区别
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection(俗称:非断开式连接),在线操作数据库时,任何对SqlConnection的操作都会引发DataReader的异常。下面同本文对dataset与datareader的区别详细学习吧


