1. 通过MyTest.Sql.Connect连接数据库
2. Connect()会根据"argDbName"缓存连接过的数据库,我的想法是缓存到_connects数组。
3. 下次连接相同的数据库时直接从_connects数组中调用。
请问各位大虾如何实现?下面是代码:
namespace MyTest
{
public class Sql
{
public System.Data.SqlClient.SqlConnection Conn;
private static System.Data.SqlClient.SqlConnection[] _connects; public void Connect(string argDbName)
{
}
}
}

解决方案 »

  1.   

    其实你不需要自己实现数据库连接池,DOTNET已经为你做了这些工作
    1、在SqlConnection的ConnectionString中可以设置连接池的大小:SqlConnection conn = new SqlConnection();
    conn.ConnectionString = "server=127.0.0.1;uid=sa;pwd=123;database=Site;Pooling=true;Min Pool Size=0;Max Pool Size=10;";参考:http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemdatasqlclientsqlconnectionclassconnectionstringtopic.asp?frame=true2、关闭数据库的时候,不使用Dispose(),连接就会自动返回到连接池中:
    conn.Close();
    //conn.Dispose();  //使用Dispose(),则不返回连接池
    conn = null;
      

  2.   

    to ah__fu(阿福)
    楼主的要求和您说的数据库连接池是不一样的,
    数据库连接池是针对一个数据库连接的多个connection对象
    而楼主需要的是不同的数据库连接缓存其connection对象我的实现如下:
    private static System.Data.SqlClient.SqlConnection[] _connects;
    这个换成
    private static Hashtable _connects;public void Connect(string argDbName)
    {
    SqlConnection conn=null;
    conn=_connects[argDbName];
    if(conn==null)
    {
    conn=connectDb();//如果缓存里面没有可用连接,调用这个函数进行连接数据库
    _connects.Add(argDbName,conn);
    }
    reuturn conn;
    }