我现在使用一个组件
http://www.cnblogs.com/yueue/archive/2007/05/13/745055.html
但发现一个问题,不知道有没有影响,
我以前用vbs时,如果conn.open后做其它操作都很快,但conn.open这个过程很慢,而我看到这个程序里,每执行一次函数如:
/// <summary>
/// 执行数据库命令返回受影响的行数
/// </summary>
/// <param name="SQLText">SQL语句 </param>
/// <returns>受影响的行数 </returns>
public int ExecuteNonQuery(string SQLText)
{
if (IsProcedure(SQLText)) { mCommand.CommandType = CommandType.StoredProcedure; } else { mCommand.CommandType = CommandType.Text; }
mCommand.CommandText = SQLText;
try
{
mCommand.Connection.Open();
return mCommand.ExecuteNonQuery();
}
finally
{
mCommand.Connection.Close();
ClearParameters();
}
他都会先conn.open执行完后再conn.close一次,
现在的问题是:如果我一页要执行10多条这个函数,每次都open后再close会不会影响执行效率,影响有多大?
因为以前的VBS我感觉影响非常大,而听说.net 有连接池,即便我close了,下次链接时open会从池里取,原不是像第一次那样执行,所以速度不会有什么影响?请问是这样吗?麻烦各位指点一二.
csdn上的回答:
又见connection忧虑贴
mCommand.Connection.Close();
不是把连接真正的关闭,而是把连接归还给连接池。
mCommand.Connection.Open(); 其实就是从连接池取连接
经测试:
效率没有影响,不管是连接远程还是连接本地数据库进行1000次写入,结果都只是差几百毫秒,
以前没考虑这个问题,今天同事提到,我才想到这问题,没想到Microsoft都已经把这问题给解决了。
而我上面提到的vbs频繁Conn.Open及Conn.Close对程序效率影响很大是因为那个年代还没有连接池这个概念,所以速度相差很大。
引用本页地址:
http://www.yongfa365.com/item/conn.open.conn.close.html