我写了一个DBPool主要使用来形成数据联接的一个连接池.cs类,
我记得在asp中applicatoin_star()是声明一个全局的,
其他的页面都可以调这个数据库连接,就不用总打开关闭数据库了。
不知道asp.net中是否可以,如何操作。
急!

解决方案 »

  1.   

    怎么做呀。我在Global.asax中,不可以呀。晕,刚学这东西。
      

  2.   

    Application["conn"] = conn;应该可以吧
      

  3.   

    Application("orcDatabaseConnection") = "data source=jdsi;" _
                                                    & "persist security info=False;" _
                                                    & "user id=sdfa;Password=das;"
      

  4.   

    也可以用static定義一個全局方法
      

  5.   

    同意 zhouzh197895(zhouzh) 的, 定义static变量比Application更容易理解,Application变量是asp里的做法
      

  6.   

    你可以存放链接串,但是你像打开一个链接放进去,不太合适吧,而且由于 OleDbConnection或者其他的IDBConnection实现类 都不是线程安全的,并发的时候会出现问题吧
      

  7.   

    namespace GLPublic
    {
    public class GLDBPool
    { public class SQLConnectInfo
    {
    public AutoResetEvent sqlEvent;
      public SqlConnection sqlConn;
    public bool bUsing;
    } public GLDBPool()
    {
    m_cnConnect = 1;
    } public GLDBPool(String strConn, int cnConnect)
    {
    if(!OnInitialUpdate(strConn, cnConnect)) return;
    }

    /// <summary>
    /// 初始化函数
    /// <summary>  
    public bool OnInitialUpdate(String strConn, int cnConnect)
    {
    if(cnConnect<=0)
    {
    m_cnConnect = 1;
    }
    m_cnConnect = cnConnect;
    //初始化数据库连接 m_ConnectList = new ArrayList();
    m_ConnectList.Clear(); for(int i=0; i<m_cnConnect; i++)
    {
    SQLConnectInfo sqlInfo = new SQLConnectInfo();
    sqlInfo.sqlConn = new SqlConnection(strConn);
    sqlInfo.sqlConn.Open();
    sqlInfo.sqlEvent = new AutoResetEvent(false);
    sqlInfo.bUsing  = false;
    m_ConnectList.Insert(i, sqlInfo);
    } return true;
    }
    public SqlConnection GetConnect()
    {
    for(int i=0; i<m_cnConnect; i++)
    {
    SQLConnectInfo sqlInfo = (SQLConnectInfo)m_ConnectList[i];
    if(sqlInfo.bUsing == false)
    {
    sqlInfo.sqlEvent.WaitOne();
    sqlInfo.bUsing = true;
    sqlInfo.sqlEvent.Set();
    }
    return sqlInfo.sqlConn;
    }
    return null;
    } public void FreeConnect(SqlConnection sqlConn)
    {
    for(int i=0; i<m_cnConnect; i++)
    {   
    SQLConnectInfo sqlInfo = (SQLConnectInfo)m_ConnectList[i];
    if(sqlInfo.sqlConn == sqlConn)
    {
    sqlInfo.sqlEvent.WaitOne();
    sqlInfo.bUsing = false;
    sqlInfo.sqlEvent.Set();
    break;
    }
    }
    } public void Release()
    {
    for(int i=0; i<m_cnConnect; i++)
    {
    SQLConnectInfo sqlInfo = (SQLConnectInfo)m_ConnectList[i];
    sqlInfo.sqlEvent.Close();
    sqlInfo.sqlConn.Close();
    sqlInfo.bUsing = false;
    }
    }
    // 用户变量声明区
    ArrayList   m_ConnectList;
    private int       m_cnConnect; }
    }
      

  8.   

    难道,asp.net在用户连上来时,按原有方法不是每次连一个用户?】