本人写了一个在服务器端自动运行的代码(不是由客户端请求来响应执行的),完成整个过程,需要多次读取写入数据库(当然是不同的表),现在问题是,新建关闭一个数据库链接(sqlconnection)是比较费时的,那么我是让整个代码共用一个数据库连接,全部执行完后再关闭还是说每单次数据库操作就新建一个连接然后关掉呢?哪个更少耗资源,时间开销较少呢?也许要分两个情况来讨论:
1,这个过程的代码逻辑本身比较耗时间,比如说完成整个过程要1分钟。
2,比较不耗时间,完成整个过程需时10秒以内。大家看如何取舍?
1,这个过程的代码逻辑本身比较耗时间,比如说完成整个过程要1分钟。
2,比较不耗时间,完成整个过程需时10秒以内。大家看如何取舍?
解决方案 »
- 关于实体类调用问题?
- asp.net 保存word
- 为什么安装IIS时会显示Staxmem.dll不存在,下载了一个显示不匹配?怎么办呢?
- 请大家帮忙看下这样的程序怎么写
- showModalDialog弹出一个框,使用returnValue返回数组,在父窗口却始终读不到这数组,字符串可以读到。
- 有isdate之类的数据类型判断函数吗?
- accordion控件 服务器标记的格式不正确。
- 怎样使用ashx文件?急!!!!!!!各位大侠帮忙啊
- 请教Asp.Net连接数据库和Asp的一个区别
- 新建ASP.NET工程无法调试
- 事务处理的问题
- asp.net中如何使一个隐藏的控件在运行时,显示在一定的位置上
OleDbHelper dataaccess = new OleDbHelper();
string sql_news = "SELECT TOP 5 iif(len(arttitle)>24 ……";
OleDbDataReader dr_news = dataaccess.GetDataReader(sql_news);
Repeater1.DataSource = dr_news;string sql_business = "SELECT TOP 3 iif(len(arttitle)>22,……";
OleDbDataReader dr_business = dataaccess.GetDataReader(sql_business);
Repeater2.DataSource = dr_business;string sql_cuxiao = "SELECT TOP 3 iif(len(arttitle)>26……";
OleDbDataReader dr_cuxiao = dataaccess.GetDataReader(sql_cuxiao);
Repeater3.DataSource = dr_cuxiao;Page.DataBind();GetDataReader()方法的定义如下:
public OleDbDataReader GetDataReader(string sqlstr)
{
OleDbConnection conn = CreateConnection();
OleDbCommand cmd = new OleDbCommand(sqlstr, conn);
OleDbDataReader dr = null;
try
{
conn.Open();
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
return dr;
}
这里面每执行一次dataaccess.GetDataReader(sql_cuxiao)方法,就经过了连接、打开、读取、关闭数据库(Access),我不知道我这样写合不合规范,有什么方法可以改进吗?这三个datareader读取的是不同表中的数据,用一条SQL语句一次读取出来貌似难以做到,如果我改下GetDataReader方法呢,就是执行三个不同的SQL语句进行查询时,采用一个数据库连接对象,这样做,是不是可以提高性能呢?不过这样做,如果采用分层开发,DAL层只提供一个GetDataReader()方法,貌似难以实现啊?请高手指点下。
活泼数据库操作类,连接及时关闭