下面的代码怎样老是提示,"已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"那里出错了呢?
提示:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。public DataSet GetClassTop()
{
DataSet ctds = new DataSet();
try {
conn.Open();
SqlCommand cmd = new SqlCommand("Index_ClassTop", BaseClass.conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter ctada2 = new SqlDataAdapter(cmd);
ctada2.Fill(ctds);
conn.Close();
}catch(Exception ex)
{
Log.WriteLog(ex.Message);
ctds = null;
}
return ctds;
} --------------------编程问答-------------------- conn在哪定义的,应该有个DataReader在占用它 --------------------编程问答-------------------- 一个DataReader必须占用一个Connection,出现这样的提示,应该是你在其它地方打开的DataReader打开后没有关闭.
仔细检查你的代码,确保每一个DataReader都在使用完后调用了DataReader.Close()方法. --------------------编程问答-------------------- 整个项目都没有使用DataReader 这种方法.
都是采用上面的方式得到数据的 --------------------编程问答--------------------
"conn.Open()"??????? !!!!
you need't to open connection when excute SqlDataAdapter.Fill(DataSet).
assume you haven't open connection outside,
then Try like:
public DataSet GetClassTop()
{
DataSet ctds = new DataSet();
try {
//conn.Open();
SqlCommand cmd = new qlCommand("Index_ClassTop", BaseClass.conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter ctada2 = new SqlDataAdapter(cmd, conn); //note here
ctada2.Fill(ctds);
//conn.Close();
}catch(Exception ex)
{
Log.WriteLog(ex.Message);
ctds = null;
}
return ctds;
}
补充:.NET技术 , C#