asp.net+access用OleDbDataReader不能及时关闭数据库问题,请高手解答
情况是这样的:网站开始运行正常,当狂刷新一段时间就提示为指定的错误,请高手解答。如图提示:下面是一段代码:///<summary>///执行查询语句,返回OleDbDat...
情况是这样的:网站开始运行正常,当狂刷新一段时间就提示为指定的错误,请高手解答。如图提示:
下面是一段代码:
/// <summary>
/// 执行查询语句,返回OleDbDataReader
/// </summary>
/// <param name="strSQL">查询语句</param>
/// <returns>OleDbDataReader</returns>
public static OleDbDataReader ExecuteReader(string strSQL)
{
OleDbConnection connection = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand(strSQL, connection);
try
{
connection.Open();
OleDbDataReader myReader = cmd.ExecuteReader();
return myReader;
}
catch (System.Data.OleDb.OleDbException e)
{
throw new Exception(e.Message);
}
}
下面的是调用上面的:
/// <summary>
/// 获得前n条数据列表
/// </summary>
/// <param name="num">前n条</param>
/// <param name="strWhere">条件</param>
/// <returns>实体数据列表</returns>
public IList<TClsProInfo> GetTopList(int num, string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(TSQLFactory.GetTopList(num, "TClsPro")).Append(" WHERE ").Append(strWhere);
IList<TClsProInfo> tclspro = new List<TClsProInfo>();
using (OleDbDataReader reader = Access.ExecuteReader(strSql.ToString()))
{
while (reader.Read())
{
tclspro.Add(SetParams(reader));
}
}
return tclspro as IList<TClsProInfo>;
}
还是不行啊,请问OleDbDataReader 可以用其他的代替吗,用什么代替这个好
还没解决哦,谁指点下
问题还没解决,怎么办 展开
下面是一段代码:
/// <summary>
/// 执行查询语句,返回OleDbDataReader
/// </summary>
/// <param name="strSQL">查询语句</param>
/// <returns>OleDbDataReader</returns>
public static OleDbDataReader ExecuteReader(string strSQL)
{
OleDbConnection connection = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand(strSQL, connection);
try
{
connection.Open();
OleDbDataReader myReader = cmd.ExecuteReader();
return myReader;
}
catch (System.Data.OleDb.OleDbException e)
{
throw new Exception(e.Message);
}
}
下面的是调用上面的:
/// <summary>
/// 获得前n条数据列表
/// </summary>
/// <param name="num">前n条</param>
/// <param name="strWhere">条件</param>
/// <returns>实体数据列表</returns>
public IList<TClsProInfo> GetTopList(int num, string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(TSQLFactory.GetTopList(num, "TClsPro")).Append(" WHERE ").Append(strWhere);
IList<TClsProInfo> tclspro = new List<TClsProInfo>();
using (OleDbDataReader reader = Access.ExecuteReader(strSql.ToString()))
{
while (reader.Read())
{
tclspro.Add(SetParams(reader));
}
}
return tclspro as IList<TClsProInfo>;
}
还是不行啊,请问OleDbDataReader 可以用其他的代替吗,用什么代替这个好
还没解决哦,谁指点下
问题还没解决,怎么办 展开
2011-01-04
展开全部
try
{
connection.Open();
OleDbDataReader myReader = cmd.ExecuteReader();
return myReader;
}
catch (System.Data.OleDb.OleDbException e)
{
throw new Exception(e.Message);
}
这么写肯定有问题,你用的不是dataadapter所以系统不会自动关闭数据库连接,当你一直刷新时,自然会不段的进行 connection.Open();以增加新的连接,当超过数据库连接数时就要报错了
你改成这样试试
try{
connection.Open();
OleDbDataReader myReader = cmd.ExecuteReader();
return myReader;
connection.Close()}
catch
{
connection.Close();
throw new Exception(e.Message);
}
{
connection.Open();
OleDbDataReader myReader = cmd.ExecuteReader();
return myReader;
}
catch (System.Data.OleDb.OleDbException e)
{
throw new Exception(e.Message);
}
这么写肯定有问题,你用的不是dataadapter所以系统不会自动关闭数据库连接,当你一直刷新时,自然会不段的进行 connection.Open();以增加新的连接,当超过数据库连接数时就要报错了
你改成这样试试
try{
connection.Open();
OleDbDataReader myReader = cmd.ExecuteReader();
return myReader;
connection.Close()}
catch
{
connection.Close();
throw new Exception(e.Message);
}
网易云信
2023-12-06 广告
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同...
点击进入详情页
本回答由网易云信提供
展开全部
不能显示关闭,还有就是不要单独的把open()放在每一个函数里面,试试提取出来,然后在每一个操作里面显示的使用close()去关闭试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你是要狂刷的话(可以说,是压力非常大的时候,你就不应该使用Reader对象)
如果你取的数据不多,几条或是几十几百条的话,建议你使用DataSet,
因为你使用Reader一读取完就算马上Close的话,也还是顶不住狂刷的访问,
数据不多,绝不使用DataReader
如果你取的数据不多,几条或是几十几百条的话,建议你使用DataSet,
因为你使用Reader一读取完就算马上Close的话,也还是顶不住狂刷的访问,
数据不多,绝不使用DataReader
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个你没写,所以就是没有关闭 ,了解?
connection.Close();
你既然Open()了 肯定就要Close
connection.Close();
你既然Open()了 肯定就要Close
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
connection.Close();
记得加这个, 如果一个方法连续调用两个查询的话,建议你将connection作伪一个参数进行传递,防止反覆关闭以及开启的connection时候又重新开启connection,会提示错误
记得加这个, 如果一个方法连续调用两个查询的话,建议你将connection作伪一个参数进行传递,防止反覆关闭以及开启的connection时候又重新开启connection,会提示错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询