做了一个小网站,有时候会出这个问题,知道应该是个常见的问题,但也不太清楚如何解决,请高手指点啊!
There is already an open DataReader associated with this Command which must be closed first.调用底层代码:(还请高手指点不足之处,先谢谢了!)
public static DataTable GetDataTable(string contype, string sql, string tname)
{
DataTable dt = new DataTable();
using (SqlConnection conn = GetConnection(contype))
{
SqlCommand comm = new SqlCommand();
try
{
comm.Connection = conn;
comm.CommandText = sql;
comm.CommandTimeout = 100;
using (SqlDataAdapter da = new SqlDataAdapter(comm))
{
da.Fill(dt);
}
}
catch (Exception ee)
{
throw new Exception(ee.Message);
}
finally
{
comm.Dispose();
conn.Close();
conn.Dispose();
}
}
return dt;
}
/// <summary>
/// 通过 SqlParameter[] 得到表
/// </summary>
/// <param name="contype">数据库连接的名字</param>
/// <param name="procName">存储过程名称</param>
/// <param name="tname">表名</param>
/// <param name="paras">存储过程的值</param>
/// <returns>表</returns>
public static DataTable GetDataTable(string contype, string procName, string tname, SqlParameter[] paras)
{
using (SqlConnection conn = GetConnection(contype))
{
// SqlDataAdapter da = null;
DataTable dt = new DataTable();
SqlCommand comm = new SqlCommand();
try
{
comm.Connection = conn;
comm.CommandText = procName;
comm.CommandTimeout = 100;
if (paras != null)
{
comm.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter para in paras)
{
comm.Parameters.Add(para);
}
}
using (SqlDataAdapter da = new SqlDataAdapter(comm))
{
da.Fill(dt);
}
}
catch (Exception ex) { throw new Exception(ex.Message); }
finally
{
comm.Dispose();
conn.Close();
conn.Dispose();
}
return dt;
}
}
There is already an open DataReader associated with this Command which must be closed first.调用底层代码:(还请高手指点不足之处,先谢谢了!)
public static DataTable GetDataTable(string contype, string sql, string tname)
{
DataTable dt = new DataTable();
using (SqlConnection conn = GetConnection(contype))
{
SqlCommand comm = new SqlCommand();
try
{
comm.Connection = conn;
comm.CommandText = sql;
comm.CommandTimeout = 100;
using (SqlDataAdapter da = new SqlDataAdapter(comm))
{
da.Fill(dt);
}
}
catch (Exception ee)
{
throw new Exception(ee.Message);
}
finally
{
comm.Dispose();
conn.Close();
conn.Dispose();
}
}
return dt;
}
/// <summary>
/// 通过 SqlParameter[] 得到表
/// </summary>
/// <param name="contype">数据库连接的名字</param>
/// <param name="procName">存储过程名称</param>
/// <param name="tname">表名</param>
/// <param name="paras">存储过程的值</param>
/// <returns>表</returns>
public static DataTable GetDataTable(string contype, string procName, string tname, SqlParameter[] paras)
{
using (SqlConnection conn = GetConnection(contype))
{
// SqlDataAdapter da = null;
DataTable dt = new DataTable();
SqlCommand comm = new SqlCommand();
try
{
comm.Connection = conn;
comm.CommandText = procName;
comm.CommandTimeout = 100;
if (paras != null)
{
comm.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter para in paras)
{
comm.Parameters.Add(para);
}
}
using (SqlDataAdapter da = new SqlDataAdapter(comm))
{
da.Fill(dt);
}
}
catch (Exception ex) { throw new Exception(ex.Message); }
finally
{
comm.Dispose();
conn.Close();
conn.Dispose();
}
return dt;
}
}
解决方案 »
- Cookie回绑无效,我ClearCookie后绑定,没效果啊,大家帮我看下
- session存验证码的值
- 还是昨天的问题 不能解决 已经有很多高手出建议了 可还是...
- asp.net ajax 白痴的使用问题?请教
- asp.net2.0(VS2005)调用js文件的问题!急!!
- 一个拷贝整个文件夹(包括子文件夹)的方法(原创)
- 新建一个webform的pagelayout默认格式为GridLayout能更改为FlowLayout么?
- 我的网站 在注册 会员时填写完资料 点提交时 有问题!
- 怎样屏蔽退格键,不让用户按退格键回到上一页
- 使用HttpClient调用api的问题,大家帮忙看看
- 求助:Asp.net下获取硬盘序列号
- #region Web 窗体设计器生成的代码 有什么用啊?
应该是DAtaReader用完了但是没有关闭的问题,
/// <summary>
/// 活动快报前5条记录
/// </summary>
/// <returns></returns>
public string selectReport()
{
int news_id = 0;//新闻ID
string news_title = string.Empty;//新闻标题 StringBuilder sbr = new StringBuilder();
DataTable dt = new DataTable();
string sql = "select top 13 id,title from News where BigClassName='活动快报' order by red desc,infotime desc";
//string sql = "select top 5 id,title from News order by infotime desc";
try
{
sbr.Append("<ul>\n");
dt = DBUtility.DataBase.GetDataTable("one", sql, "News");
int i = 0;
foreach (DataRow row in dt.Rows)
{
news_id = Convert.ToInt32(row["id"].ToString());
news_title = row["title"].ToString();
if (i == 0)
{
sbr.Append("<li class=\"FONTsize\"><a href=\"/2009/News.aspx?id=" + news_id + "\"><B>" + news_title + "</B></a></li>\n");
}
else
{
if (i % 2 == 0)
{
sbr.Append("<td width=\"50%\">\n");
sbr.Append("<a href=\"/2009/News.aspx?id=" + news_id + "\" title=\"" + news_title + "\">" + ExaminesList.GetString(news_title, 30) + "</a>\n");
sbr.Append("</td>\n</tr>\n</table>\n");
sbr.Append("</li>\n");
}
else
{
sbr.Append("<li>\n");
sbr.Append("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"396\">\n<tr>\n<td width=\"50%\">\n");
sbr.Append("<a href=\"/2009/News.aspx?id=" + news_id + "\" title=\"" + news_title + "\">" + ExaminesList.GetString(news_title, 30) + "</a>\n");
sbr.Append("</td>\n");
}
}
i++;
}
if (i % 2 == 0)
{
sbr.Append("<td width=\"50%\">\n");
sbr.Append("</td>\n</tr>\n</table>\n");
sbr.Append("</li>\n");
}
sbr.Append("</ul>\n");
}
catch (Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
HttpContext.Current.Response.End();
}
finally
{
if (dt != null)
{
dt.Dispose();
}
}
return sbr.ToString();
}
There is already an open DataReader associated with this Command which must be closed first.
<customErrors mode="Off" >然后运行页面,看页面中下部的提示
SqlConnection conn = new SqlConnection();
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Open();
试试