日期:2014-05-16  浏览次数:20496 次

请问,是否每次查询数据库时都要做数据库的连接?

请问:
1. 是否每次查询数据库时都要做数据库的连接?
2. 是否需要声明成公共变量,以便每次操作数据库时省略掉连接这个过程。请问大家一般是怎么做的?
3. 如果每次都进行连接,会有什么时候弊端?
谢谢!

    public Cnn

    Set Cnn = CreateObject("ADODB.Connection")
    CnnStr = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Password=xxxxxx;Initial Catalog=DBname;Data Source=ServerName"      

    Cnn.Open CnnStr

------解决方案--------------------
一般来说不建议每次查询都联接,因为这样消耗很多的资源。通常是缓冲池保证联接的重用
------解决方案--------------------
引用:
请问:
1. 是否每次查询数据库时都要做数据库的连接?
2. 是否需要声明成公共变量,以便每次操作数据库时省略掉连接这个过程。请问大家一般是怎么做的?
3. 如果每次都进行连接,会有什么时候弊端?
谢谢!

    public Cnn

    Set Cnn = CreateObject("ADODB.Connection")
    CnnStr = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Password=xxxxxx;Initial Catalog=DBname;Data Source=ServerName"      

    Cnn.Open CnnStr


你可以先看下这篇文章, http://www.cnblogs.com/jxnclyk/archive/2010/04/27/1722007.html

一般来说, 你最好配置中写上连接池,.net 在连接串相同的情况下,会用同一个连接池里的连接而不是重新创建的——即使你的代码是new SqlConnection, 最终也不一会新创建连接。 

如果在用户量非常小的情况下, 也可以创建一个静态的连接, 所有人共用这个连接即可。

当然, 这样做还是会产生一些问题的。

连接池技术已经非常成熟了, 你不需要考虑很多的。
------解决方案--------------------
引用:
请问,连接池是否适用于cs结构呢?


连接池是.net 内部已处理好的东西,你只需要把连接串写好,基本上不需要你在代码里东改西改的了……
B/S和C/S与连接串没有任何关系, 谁来都是连……

其它要注意的是每次使用连接, 要注意关闭。