我做了一个试验:不断的打开数据库连接,关闭数据库连接。在试验过程中发现,应用启动时打开的一个数据库连接大概需要1秒钟左右,以后打开数据库连接几乎不花时间(不到1毫秒),即使关闭数据库服务器,打开数据库连接照样能成功。这是不是连接池机制的原因,连接池难道是在本地维护的。
     

解决方案 »

  1.   

    在程序初始化的时候建立连接,得到con,可以建个类如:
    using System;
    using System.Text;
    using System.Data;
    using System.Data.OracleClient;
    namespace Gis_T.DbService
    {
    /// <summary>
    /// 用OrcleClient直接操作
    /// </summary>
    public sealed  class ClsOracleDbService
    {
    private  static string m_ConnString;
    private  static OracleConnection m_Conn= new OracleConnection();
    static ClsOracleDbService()
    {
    StringBuilder pstr = new StringBuilder();
    pstr.Append("Data Source=");
    pstr.Append(ClsConfigManager.g_DBName); pstr.Append(";Password =");
    pstr.Append(ClsConfigManager.g_DBPassword); pstr.Append(";User ID =");
    pstr.Append(ClsConfigManager.g_DBUser);
    m_ConnString = pstr.ToString();
    Console.WriteLine(m_ConnString);
    }
    public static bool ConnOracle()
    {
    if(m_Conn.State ==ConnectionState.Open )return true;
    m_Conn.ConnectionString = m_ConnString;
    try
    {
    m_Conn.Open();
    return true;
    }
    catch(Exception ex)
    {
    Console.WriteLine(ex.ToString());
    return false;
    } } public static void CloseOracle()
    {
    m_Conn.Close();
    }
    public static OracleDataReader ExecuteReader(string sql)
    {
    if (m_Conn.State != ConnectionState.Open)
    if (!ConnOracle()) return null; OracleCommand pCommand = new OracleCommand(sql, m_Conn);
    OracleDataReader pReader = pCommand.ExecuteReader();
    if (pReader.Read()==false)
    {
    pReader.Close();
    return null;
    }
    return pReader;
    }


    }
    }